You need to enable JavaScript to run this app.
导航
快速开始-构建第一个mqtt连接
最近更新时间:2025.03.05 21:44:45首次发布时间:2025.03.05 21:44:45

概述

云原生消息引擎MQTT版与火山引擎的多个云产品组合,可以支持大规模的MQTT连接。MQTT的企业级产品中涉及 云产品控制台、EMQx Dashboard、MQTT认证、鉴权、接入 等多个概念。本文组合多个文档,为首次使用 MQTT 的客户快速构建第一个MQTT连接。

准备工作

  • 云原生消息引擎 MQTT 版
  • 弹性公网 IP
  • (可选)MQTTx

操作流程

  • 购买实例
  • 配置 emqx Dashboard 控制台用户
  • 登陆 emqx Dashboard 控制台
  • 配置 mqtt 客户端连接认证方式(以 password-base为例)
    • 配置认证使用的用户名和密码
  • 配置 mqtt 客户端权限
  • 绑定 EIP,新增公网接入点
  • Python3 paho 接入 EMQx
  • (可选)MQTTx 发起公网 MQTT 接入 EMQx
  • 检查MQTT连接状态

控制台查看实例

  • 购买实例后,在控制台查看实例状态
  • 可以通过运行中实例的实例名称跳转到实例的详情页

Image

配置用户

  • Dashboard 用户采用 RBAC (Role Based Access Control)模型,详见创建用户
  • 首次访问 EMQx Dashboard 控制台时,需要配置 Dashboard 的用户名、密码、角色
  • 此处权限建议设置为“管理员”,以便于后续演示操作

Image

登陆Dashboard

  • EMQx Dashboard 默认配置为公网可访问,通过 Dashboard 地址可以接入 EMQx Dashboard,详见 登录 Dashboard

Image

配置 mqtt 客户端连接认证方式

  • EMQX 通过内置数据库为用户提供了一种低成本、开箱即用的密码认证方式。启用后,EMQX 会将内置的 Mnesia 数据库存储客户端身份凭据,详见 客户端认证概述
  • 点击左侧导航栏的 访问控制 -> 客户端认证 中创建认证方式
  • 认证方式选择 “Password-Based”(默认)
  • 数据源选择 “内置数据库”(默认)
  • 配置参数选择 “username”(默认)、加密方式选择“sha256”(默认),加盐方式 “suffix”(默认)

Image

配置认证使用的用户名和密码

  • 内置数据库的用户管理中添加 mqtt client 认证所使用的 用户名 和 密码
  • 后续 MQTT Client 连接需要在连接中配置该用户名和密码
  • 此例子中用户名配置为【user】,密码为【123456】

Image

配置 mqtt 客户端权限

  • 左侧导航栏的 访问控制 -> 客户端授权,添加客户端授权方式,详见 客户端授权概述
  • 数据源选择 “内置数据库”(默认)
  • 内置数据库 的 权限管理 中,针对 所有用户 ,添加一条针对 devices/# 主题的 发布和订阅时 允许 权限

Image

绑定 EIP,新增公网接入点

  • 云原生消息引擎支持创建一个公网接入的 MQTT 接入点,即可实现公网的 MQTT 设备接入,详见添加公网监听器
  • 返回控制台,在监听器页面选择公网,绑定已有的空闲 EIP,协议选择为 TCP 协议

Image

Python3 paho 接入 EMQx

Paho 提供了一系列库,允许开发者使用 MQTT 协议进行消息通信。对于 Python SDK,可以使用 pip 安装 paho-mqtt,通过它来连接 MQTT 服务器、发布消息和订阅主题。

安装 paho-mqtt

pip install paho-mqtt

python3 构建 MQTT 连接

import paho.mqtt.client as mqtt

# 连接成功回调函数
def on_connect(client, userdata, flags, rc):
    print("连接返回码:", rc)

# 消息接收回调函数
def on_message(client, userdata, msg):
    print("主题:", msg.topic)
    print("消息:", msg.payload.decode())

# 创建 MQTT 客户端实例
client = mqtt.Client()

# 设置用户名和密码
client.username_pw_set("user", "123456")

# 绑定回调函数
client.on_connect = on_connect
client.on_message = on_message

# 连接到 MQTT 服务器(不使用 SSL)
client.connect("mqtt-0040ogedpfhc.mqtt.volces.com", 1883, 60)

# 开启网络循环,保持连接
client.loop_forever()

(可选)通过MQTTx连接EMQx实例

  • MQTTx 中通过配置服务器地址、端口、用户名、密码 接入云原生消息引擎 MQTT 版
  • MQTTx 是一款开源的 MQTT 工具,详见下方参考

Image

检查MQTT连接状态

  • EMQx Dashboard 侧栏的 监控 -> 客户端 中可以查看当前设备的连接状态,以及连接详情

Image

参考:MQTTx

MQTTX 是由 EMQ 开发的一款开源跨平台 MQTT 5.0 桌面客户端,它兼容 macOS,Linux 以及 Windows 系统。用户界面采用聊天式设计,使得操作逻辑更加简明直观。它支持用户快速创建和保存多个 MQTT 连接,便于测试 MQTT 连接,以及消息的订阅和发布。参考 https://mqttx.app/zh/docs/downloading-and-installation 安装 MQTTx 客户端。