ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Windows 10 上搭建 EMQX + MQTTX 本地 MQTT 调试环境实战

Windows 10 上搭建 EMQX + MQTTX 本地 MQTT 调试环境实战 1. 为什么要在 Windows 10 上搭这套 MQTT 环境做物联网或者智能家居相关开发的朋友大概率绕不开 MQTT 这个协议。它轻量、省带宽、支持海量设备连接几乎成了物联网通信的事实标准。而 EMQX 是目前用得最多的开源 MQTT Broker 之一另一个 MQTTX 则是配套的客户端调试工具两者组合起来就是一套非常顺手的本地开发调试环境。我见过不少新手一上来就在 Linux 服务器上折腾 EMQX其实在 Windows 10 上先把这套环境跑通对于学习 MQTT 协议、验证业务逻辑、调试设备上报消息完全够用而且省事得多。这篇文章就把我在 Windows 10 上从下载到跑通全流程的经验分享出来照着做基本不会踩坑。这套组合能解决什么问题呢几个典型场景本地开发时需要一个稳定运行的 MQTT Broker 来接收/转发消息。用 MQTTX 快速模拟发布端和订阅端验证消息链路是否通畅。调试设备端代码时用 MQTTX 查看实际收到的消息内容和格式。测试遗嘱消息、保留消息、QoS 等级等 MQTT 特性不需要写一行代码。适合谁来参考刚接触 MQTT 的嵌入式开发者、物联网平台开发人员、智能家居爱好者以及需要在 Windows 笔记本上做 IoT 原型验证的工程师都适用。2. 整体设计思路先 Broker 后 Client 的搭建顺序2.1 为什么选 EMQX 而不是 MosquittoWindows 上能跑的 MQTT Broker 其实不少Mosquitto 也有一批忠实用户。但我个人更推荐 EMQX原因很直接第一EMQX 自带 Web 管理控制台安装完就能在浏览器里看连接数、订阅关系、消息流量这对于排错和观察系统状态太方便了。Mosquitto 默认没有图形界面全靠命令行和配置文件新手容易懵。第二EMQX 对 MQTT 5.0 协议的支持非常完整WebSocket 接入、共享订阅、延迟发布这些高级特性都内置好了后续做更复杂的调试不需要换 Broker。第三Windows 安装包做得比较省心虽然官方主推 Docker 和 Linux 部署但 Windows 版的 ZIP 包解压即用配置也简单。当然 Mosquitto 也有优势比如安装包极小、内存占用低如果你的需求只是跑一个最简单的 Broker那选它也没毛病。但考虑到调试体验和后续扩展我建议一步到位用 EMQX。2.2 先装 Broker 再装 Client 的理由安装顺序上我建议先装 EMQX再装 MQTTX然后通过 MQTTX 连接 EMQX 做验证。这么做的好处是MQTTX 安装完成后马上就能进行连接测试一次性把两端都验证了效率最高。如果你反过来先装 MQTTX装完也连不了还得回头装 EMQX多一步来回切换。工具链的搭建尽量保持“安装一个验证一个”的节奏这是减少排错范围的好习惯。2.3 端口规划1883、8083、18083 的关系EMQX 装好后会默认监听几个端口搞清楚它们不用死记硬背但至少要知道各自是干嘛的端口用途1883MQTT 协议默认端口MQTTX 连接时填这个8083WebSocket 端口浏览器里跑 MQTT.js 时用8084WebSocket TLS 端口走加密连接时用18083Dashboard 管理控制台端口浏览器访问用这几个端口别搞混特别是 1883 和 18083。我见过有人用浏览器打开了 18083 的管理后台然后拿着这个端口去 MQTTX 里填连接地址结果怎么都连不上白白折腾半天。3. 核心细节解析安装前的版本选择与思路3.1 版本选择Open Source 版就够用EMQX 分开源版和企业版个人学习、本地调试选开源版完全够。到官网下载页面直接选 Windows 对应的版本就行。版本号方面EMQX 的版本更新比较快大版本之间有配置格式的差异。建议下载当前最新的稳定版本不要追 Beta 版。另外注意区分 ZIP 包和 EXE 安装包两者选一个就行。我个人的习惯是用 ZIP 包原因后面细说。MQTTX 那边则简单得多它有 Windows 桌面客户端安装包也有命令行版。桌面版对新手更友好下载 EXE 安装就行。3.2 ZIP 包和安装包怎么选EMQX 官方提供了emqx-windows-版本号.zip这样的压缩包解压就能跑不需要执行安装程序。这样做的好处很明显不想用了直接删目录不留注册表垃圾也不会残留 Windows 服务。对于做开发调试的场景这比安装包清爽得多。如果你需要 EMQX 开机自启、作为 Windows 服务运行那就用安装包。但大多数情况下本地调试不需要这么重的部署方式ZIP 包足够。下载的时候留意一下如果通过官网下载慢可以考虑国内加速站但要注意校验文件是否完整。3.3 MQTTX 桌面版的安装细节MQTTX 的下载页面会提供多个平台的安装包Windows 选.exe后缀的就行。安装过程就是标准的下一步下一步不需要特殊配置。安装完打开界面非常简洁主要操作都在左侧的连接管理区域。需要注意的一点是MQTTX 有桌面版和命令行版两个形态。命令行版适合脚本化操作桌面版适合交互式调试两者不冲突。初学者先把桌面版用好就足够了。4. 实操过程与核心环节实现4.1 第一步下载 EMQX 安装包下载地址在 EMQX 官网进入下载页面后选择 Windows 平台版本选开源版。如果下载速度不理想可以尝试用下载工具或者镜像站。下载完成后建议先校验一下文件哈希值官网提供了 SHA256 校验值。这一步在网络安全环境不确定的情况下尤其重要防止下载到被篡改的文件。4.2 第二步解压并启动 EMQX把 ZIP 包解压到一个路径中不包含中文和空格的目录比如D:\emqx或者C:\emqx。这里有个容易忽略的坑如果解压路径带中文或者空格EMQX 启动时可能报错或者加载配置文件失败。这不是 EMQX 的问题很多 Java 系和 Erlang 系的软件都有这个毛病尽量用纯英文路径。解压完成后进入 bin 目录你会看到emqx.exe或者emqx.cmd这样的文件。打开 PowerShell 或 CMD切换到该目录执行cd D:\emqx\bin .\emqx start看到类似 EMQX X.Y.Z is started successfully 的提示就说明启动成功了。还有一个小细节第一次启动时 Windows 防火墙可能会弹窗询问是否允许 EMQX 监听端口这里务必点击允许否则后面 MQTTX 连接时会报超时。4.3 第三步验证 EMQX DashboardEMQX 启动后打开浏览器访问http://localhost:18083你会看到登录页面。默认用户名是admin密码是public。登录进去后可以看到总览仪表盘包括连接数、订阅数、消息发布速率等实时数据。第一次登录强烈建议修改默认密码毕竟 18083 端口默认是监听所有网卡的如果你在局域网环境别人也能访问到这个管理后台。修改路径在 Dashboard 的“系统设置”里操作很简单。另外再确认一下 EMQX 的监听状态可以在 PowerShell 里执行netstat -an | findstr 1883能看到TCP 0.0.0.0:1883处于 LISTENING 状态就说明 MQTT 服务正常。4.4 第四步安装 MQTTX 客户端下载 MQTTX 安装包双击运行安装路径同样建议保持默认或者选一个纯英文目录。安装完成后打开 MQTTX界面上会有一个“新建连接”的按钮点击后会弹出连接配置表单。MQTTX 的连接表单需要填几个关键参数名称随便填一个比如 “本地测试”。Host填mqtt://127.0.0.1或者mqtt://localhost。端口默认填 1883如果 EMQX 没改过端口这个不用动。用户名/密码如果 EMQX 没开启认证这两个留空就行。填完之后点击“连接”正常情况下几秒钟内就会显示连接成功。左侧连接列表里这个连接条目会变成绿色状态。4.5 第五步用 MQTTX 做发布/订阅测试连接建立后就可以开始玩消息了。这是整个教程最核心的环节我会把操作和背后的原理结合起来讲。MQTTX 的连接页面里上方是 “订阅主题” 区域下方是 “消息发布” 区域。先添加一个订阅主题。点击“添加订阅”主题填test/topicQoS 选 0然后确认。MqttEntries 列表里就会出现这个订阅进入“待接收消息”状态。然后在消息发布区域主题同样填test/topic消息内容填一段 JSON比如{temperature: 23.5, humidity: 60}点击发送按钮你会看到上方订阅区域立刻收到这条消息。这就是最简单的 MQTT 消息循环客户端发布一条消息到 BrokerBroker 根据主题匹配规则把消息推给所有订阅了该主题的客户端。这里我加一个更直观的测试再开一个 MQTTX 窗口用同样的参数连接 EMQX也订阅test/topic。然后在第一个窗口发消息你会发现两个窗口都能收到同一条消息。这就演示了多个消息、一对多转发的机制也解释了 MQTT 里“发布者与订阅者解耦”这个核心概念。4.6 第六步测试 QoS 1 和遗嘱消息基础消息收发搞定后建议顺手把 QoS 1 和遗嘱消息也测一下。QoS 1 表示至少一次送达Broker 收到消息后会回一个 PUBACK 确认。在 MQTTX 发消息时把 QoS 选为 1然后在 EMQX Dashboard 的“观察者”页面里看消息计数可以直观感受到 QoS 不同等级带来的差异。遗嘱消息则更有意思。在 MQTTX 的“连接配置”里找到“遗嘱”选项填一个主题比如device/offline消息内容填device disconnected。然后保存并重新连接。接着直接把 MQTTX 这个连接强制断开比如直接关掉会话进程你再用另一个已经订阅了device/offline的客户端看会发现收到了遗嘱消息。这个特性在实际项目里非常有用可以用来做设备上下线检测比如设备异常掉线时向业务系统报警。5. 常见问题与排查技巧实录5.1 MQTTX 连接 EMQX 超时这是出现频率最高的问题。排查顺序如下先用 PowerShell 执行netstat -an | findstr 1883确认 EMQX 是否真的在监听 1883 端口。再确认防火墙是否放行。打开“Windows 安全中心”→“防火墙和网络保护”→“允许应用通过防火墙”在列表里找到 EMQX 进程确保“专用”和“公用”两个复选框都勾上了。如果还是连不上尝试在 MQTTX 的 Host 字段填127.0.0.1而不是localhost。虽然两者通常等价但在某些网络环境配置下localhost会优先解析成 IPv6 的::1而 EMQX 的 1883 端口默认绑定的是 IPv4。5.2 EMQX 无法启动或启动后立即退出遇到这种情况最能说明问题的是日志文件。到 EMQX 解压目录的log文件夹下打开emqx.log拉到最后看报错信息。常见错误包括端口被占用、配置文件格式错误、Erlang 虚拟机启动失败。端口被占用是最常见的可以换端口解决。修改etc/emqx.conf里的监听配置把 1883 改成 1884再重启试试。5.3 防火墙提示弹窗没点允许这个坑挺隐蔽。如果第一次启动 EMQX 时防火墙弹窗被误点了“取消”后面连几百次都会失败Windows 已经把 EMQX 的网络访问拦死了。解决办法就是像上面提到的手动在防火墙白名单里把 EMQX 加进去。5.4 Dashboard 能开但 MQTTX 连不上能开 Dashboard 说明 EMQX 进程是正常的问题大概率出在端口上。用浏览器访问http://localhost:18083确认服务正常后再检查 1883 端口的监听情况。有一种常见情况是 EMQX 版本不同导致 Dashboard 端口变了老版本有部分版本用 18083有些用 18084以实际启动日志为准。5.5 局域网内的其他机器连不上 EMQX如果你想让同一局域网里的其他电脑连接你的 EMQX需要注意三点。一是把 MQTTX 里的 Host 从localhost改成你的 Windows 机器的局域网 IP比如192.168.x.x。二是 Windows 防火墙必须放行 1883 端口可以在“高级安全 Windows Defender 防火墙”里新建入站规则专门放行 TCP 1883。三是确认 EMQX 的监听地址不是只绑定了 127.0.0.1。默认情况下 EMQX 监听 0.0.0.0即所有网卡但保险起见可以在配置里检查listener.tcp.external部分的绑定地址。5.6 配置文件的 BP 级避坑提示修改 EMQX 配置之前强烈建议先备份原文件。另外注意EMQX 5.x 开始配置文件的组织方式有一些调整很多配置项从emqx.conf拆到了cluster.hocon等文件里。改配置不要凭印象瞎猜直接查官方文档对应版本或者用emqx check_config命令先检查语法是不是没问题。5.7 快速定位一切问题的最短路径最后给一个通用的排错思路所有 MQTT 连接问题都可以按这个顺序排查服务端是否在监听端口netstat。服务端是否正常启动看日志。防火墙是否放行看规则。客户端连接参数是否正确Host、Port、用户名密码。协议版本是否匹配EMQX 默认兼容 MQTT 3.1/3.1.1/5.0。这五步走完大部分问题都能定位到根因不用瞎猜。6. 常用的 EMQX 操作速查整个调试过程中有几个命令值得记下来。EMQX 的命令都在 bin 目录下命令作用emqx start启动服务emqx stop停止服务emqx restart重启服务emqx status查看运行状态emqx console前台运行可看到完整日志输出适合调试启动问题排查启动问题的时候用emqx console比start好使因为所有错误直接打到终端上一眼就能看出来。我遇到配置文件写错的情况基本都是靠 console 模式定位的。还有一个建议EMQX 在 Windows 上跑的时候注意不要直接关闭弹出的控制台窗口虽然它在你关闭窗口后还能在后台运行但容易留下孤儿进程。规范的启停操作都走命令行。7. 一些自己的体会这套环境我在本地用了挺长时间最大的感受是 MQTT 这个概念光看文档很难真正理解透但只要自己动手用 MQTTX 发几条消息、看 EMQX Dashboard 里的流量变化很多概念一下子就通了。比如发布订阅模式为什么叫“Broker”遗嘱消息为什么要有 Keep Alive 配合这些事情动手试一遍比看十篇文章都管用。再补充一个小技巧调试的时候尽量把 MQTTX 和 EMQX Dashboard 分屏展示左边发消息右边看计数变化速度非常直观。另外测试完记得把连接关掉省得后面设备端调试时发现 Broker 连接数怎么莫名其妙多了好几个。这套组合装好一次之后基本不用再动后面写设备端代码、写服务端业务逻辑的时候都会一直用到。如果后续想深入EMQX 的企业版里还有规则引擎、数据桥接这些强大的功能能直接把 MQTT 消息写入数据库或者转发到 HTTP 服务。不过那都是后话了先把本地这一套跑起来再说。
返回列表