常州贞明电子科技有限公司
首页 / 技术指南 / 通信协议
通信协议

Windows本地MQTT服务器搭建教程:EMQX与MQTTX发布订阅

下载并启动EMQX,配置客户端认证,使用MQTTX完成双客户端发布与订阅。图文步骤对应EMQX 5.3.0的Windows环境。

贞明电子技术团队约 15 分钟阅读
两个MQTTX客户端互相发布并接收JSON消息

MQTT通信由消息服务器和客户端共同完成。EMQX负责接收并转发消息,MQTTX负责建立连接、订阅主题和发送消息。本教程在一台Windows电脑上完成服务器启动、账号认证和两个客户端的消息互通,适合了解发布订阅流程和开发对接。

适用环境与软件下载

图文步骤采用EMQX 5.3.0的Windows原生安装包。EMQX自5.4.0起停止发布Windows原生安装包,本教程中的5.3.0属于历史版本;新版本部署可使用官方提供的Linux或容器安装方式。MQTTX可从官网选择当前适合自己电脑的桌面安装包。

EMQX 5.4.0版本说明 · EMQX当前安装说明

下载MQTTX桌面客户端,创建连接并查看发布订阅消息。

MQTTX官方下载 ↗
软件用途下载入口
EMQX 5.3.0 Windows本教程图文环境的本地MQTT服务器历史Windows安装包
MQTTX DesktopMQTT连接、订阅与发布MQTTX官方下载页面

本地联调使用两个端口:1883用于MQTT连接,18083用于EMQX Dashboard。服务器与客户端位于同一台电脑时,客户端地址填写127.0.0.1。

下载并解压EMQX Windows安装包

下载emqx-5.3.0-windows-amd64.zip,解压到路径简短的文件夹,例如D:\EMQX。解压后应能看到bin、etc、data和log等目录。下图为5.3.0的下载和解压界面。

EMQX产品首页与本地部署入口
EMQX产品首页与本地部署入口
EMQX历史版本产品选择界面
EMQX历史版本产品选择界面
EMQX 5.3.0 Windows安装包下载界面
EMQX 5.3.0 Windows安装包下载界面
EMQX压缩包解压后的目录结构
EMQX压缩包解压后的目录结构

在Windows终端启动EMQX

进入解压目录下的bin文件夹,在该目录打开PowerShell,运行安装包内的启动脚本:

cd D:\EMQX\bin
.\emqx.cmd start

启动后查看终端输出,确认没有启动错误。服务的配置和运行日志分别位于解压目录的etc与log文件夹。

在EMQX的bin目录打开终端
在EMQX的bin目录打开终端
EMQX 5.3.0在Windows终端启动
EMQX 5.3.0在Windows终端启动

打开本地Dashboard并设置管理密码

浏览器访问http://localhost:18083/。使用该安装版本的初始化登录信息进入Dashboard,完成管理员密码设置。Dashboard账号用于管理服务器;下一节创建的MQTT用户用于客户端连接,两者用途不同。

进入概览页后,可以查看当前连接、订阅和消息统计。服务器与MQTTX同机运行时,无需把管理端口开放到公网。

本地EMQX Dashboard登录页面
本地EMQX Dashboard登录页面
首次登录后的管理员密码设置
首次登录后的管理员密码设置
EMQX Dashboard运行概览
EMQX Dashboard运行概览

创建用户名与密码认证

在Dashboard的访问控制中进入认证管理,创建认证规则。认证方式选择Password-Based,数据源选择内置数据库。

  1. 选择基于密码的认证方式。
  2. 选择内置数据库,使用EMQX保存和管理客户端用户。
  3. 账号类型选择username。图示5.3.0环境采用sha256和suffix配置。
  4. 完成创建后进入用户管理。

创建两个独立客户端账号,本文分别使用MQTT1和MQTT2作为示例用户名;各账号设置自己的密码,并按发布、订阅主题配置访问权限。后续在MQTTX中填写与服务器一致的账号信息。

创建MQTT客户端认证
创建MQTT客户端认证
选择Password-Based认证方式
选择Password-Based认证方式
选择内置数据库作为认证数据源
选择内置数据库作为认证数据源
EMQX 5.3.0用户名认证与密码存储配置
EMQX 5.3.0用户名认证与密码存储配置
认证创建后的用户管理入口
认证创建后的用户管理入口
在内置数据库中添加MQTT客户端用户
在内置数据库中添加MQTT客户端用户
两个MQTT客户端账号的用户列表
两个MQTT客户端账号的用户列表

下载MQTTX并创建两条连接

通过MQTTX官方下载页面下载桌面客户端。安装并打开后,可以在设置中切换简体中文。创建两条连接,或并排打开两个客户端窗口,分别用于发送和接收消息。

下表对应本机联调环境。Host中填写地址即可,协议在单独的下拉框选择。

配置项客户端1客户端2
名称MQTT1MQTT2
Client IDhao1hao2
协议mqtt://mqtt://
Host127.0.0.1127.0.0.1
端口18831883
用户名MQTT1MQTT2
密码该账号自行设置的密码该账号自行设置的密码
MQTT协议版本3.1.13.1.1

两个连接的Client ID必须不同。填写参数后分别连接服务器,并在EMQX概览或客户端列表中查看连接状态。MQTTX的产品名称与连接使用的MQTT协议版本是两个不同概念,本例采用MQTT 3.1.1。

MQTTX客户端下载页面
MQTTX客户端下载页面
并排查看两个MQTTX客户端
并排查看两个MQTTX客户端
MQTTX简体中文语言设置
MQTTX简体中文语言设置
MQTTX新建连接入口
MQTTX新建连接入口
两条MQTT连接建立后的客户端界面
两条MQTT连接建立后的客户端界面

设置发布主题与JSON消息

客户端1发布温度消息,客户端2发布湿度消息。主题名称区分大小写,发布与订阅时保持一致。

客户端发布主题消息内容
客户端1/MQTT1/pub{"wendu":23.56}
客户端2/MQTT2/pub{"shidu":77.56}

发送区的消息格式选择JSON,再填写消息内容。先完成下一节的订阅,再进行发布,便于观察实时消息。

MQTTX设置发布主题与JSON消息
MQTTX设置发布主题与JSON消息

让两个客户端交叉订阅

客户端1订阅/MQTT2/pub,用于接收客户端2的湿度消息;客户端2订阅/MQTT1/pub,用于接收客户端1的温度消息。在新建订阅中填写对应主题并保存。

消息接收区可选择JSON显示格式,并切换为只显示已接收消息,使发送与接收记录更容易区分。

MQTTX添加交叉订阅主题
MQTTX添加交叉订阅主题
MQTTX订阅消息的JSON显示设置
MQTTX订阅消息的JSON显示设置

发布消息并检查接收结果

  1. 确认两条连接均已建立,并完成对应主题的订阅。
  2. 在客户端1发布{"wendu":23.56},查看客户端2接收区的主题与消息。
  3. 在客户端2发布{"shidu":77.56},查看客户端1接收区的主题与消息。
  4. 再次修改数值并发布,观察接收区是否出现新的消息记录。

两端能接收对方主题下的消息,即可确认本机的连接、认证、订阅和发布链路已经打通。

两个MQTTX客户端互相发布并接收JSON消息
两个MQTTX客户端互相发布并接收JSON消息

常见问题与排查

MQTTX连接1883还是18083?

MQTT客户端连接1883。18083用于浏览器打开EMQX Dashboard,两者不能混用。

连接成功却收不到消息,先检查什么?

先确认接收端已订阅,再核对主题的大小写与斜杠是否一致,并检查该账号是否有对应主题的订阅权限。

两条连接为什么会互相断开?

检查Client ID是否重复。同一服务器上的两个独立客户端应使用不同Client ID。

其他电脑能填写127.0.0.1连接这台服务器吗?

不能。127.0.0.1始终指向客户端所在电脑。跨电脑连接应填写服务器可达地址,并核对MQTT监听地址和防火墙设置。

这篇教程是否适用于最新EMQX Windows安装包?

图文步骤对应EMQX 5.3.0历史Windows环境。EMQX自5.4.0起停止发布Windows原生安装包,新版本可采用官方Linux或容器安装方式。

对接物联地带与设备指令

上述步骤建立的是本地EMQX通信环境。对接物联地带时,使用平台提供的地址、账号、设备SN和主题规则;本教程的本地账号及/MQTT1/pub等主题不对应平台设备主题。

设备状态订阅、控制命令与HTTP接口可查看物联地带API接入指南。通道控制命令可通过设备指令生成器选择通道数量和动作后生成。

图文版权与许可

原作者:豪哥追求卓越。原文:《Windows系统下本地MQTT服务器搭建(保姆级教程)》。原文及配图采用CC BY-SA 4.0许可。

本教程对文字结构、版本说明、连接参数表和下载入口进行了改写,保留原作者配图中的署名;本页图文教程的改编内容同样采用CC BY-SA 4.0许可。

需要产品选型、协议或项目配合?

提供现场对象、通信条件、设备或采集点数量和期望功能,贞明电子可协助梳理设备与系统方案。

咨询 16605298829

联系贞明电子

选型、采购或项目咨询,可直接拨打电话,也可留下联系方式。

拨打电话16605298829淘宝店铺 ↗
询价清单 0