在之前AIOT相关的项目开发中,边缘端的设备传输数据啊都是通过mqtt协议来完成的,最近正好有需要用到对应的开发内容,就趁着闲暇的时间在本地构建出来MQTT对应的环境,方便后续使用。
这里有很多种方式可以实现,我选择的是Mosquitto,Mosquitto 是一个开源的 MQTT 代理(broker),支持 MQTT v3.1 和 v3.1.1 协议。它提供了完整的 MQTT 代理功能,适合用于测试和开发。
1. 下载 Mosquitto
访问 Mosquitto 官方网站下载页面:Download | Eclipse Mosquitto,下载适用于 Windows 的安装包。
2. 安装 Mosquitto
-
下载完成后,解压下载的文件。
-
打开解压后的文件夹,找到
mosquitto.exe
文件。这是 Mosquitto 的可执行文件。
3. 配置 Mosquitto
-
配置文件:Mosquitto 使用配置文件来设置代理的行为。默认情况下,Mosquitto 可以在没有配置文件的情况下运行,但为了更好的控制,建议创建一个配置文件。
-
创建一个名为
mosquitto.conf
的文件,并添加以下基本配置listener 1883 allow_anonymous true
-
listener 1883
:指定 Mosquitto 监听的端口。 -
allow_anonymous true
:允许匿名连接。在生产环境中,建议禁用匿名连接并使用认证机制。
-
4. 启动 Mosquitto
-
打开命令提示符(CMD)或 PowerShell。
-
进入 Mosquitto 的安装目录
cd C:\path\to\mosquitto
-
启动 Mosquitto 代理
mosquitto -c mosquitto.conf
如果一切正常,Mosquitto 将在后台运行,并监听端口 1883。
5. 测试 MQTT 连接
-
使用 Mosquitto 客户端工具:Mosquitto 提供了一个简单的命令行客户端工具,可以用来测试 MQTT 连接。
-
发布消息
mosquitto_pub -h localhost -t "test/topic" -m "Hello MQTT"
-
-h localhost
:指定代理的地址。 -
-t "test/topic"
:指定主题。 -
-m "Hello MQTT"
:指定消息内容。
-
-
订阅消息
mosquitto_sub -h localhost -t "test/topic"
-
-h localhost
:指定代理的地址。 -
-t "test/topic"
:指定主题。 如果一切正常,订阅客户端将接收到发布客户端发送的消息。
-
-
到这里基础的构建工作已经完成了,在实际开发测试的过程中可能命令终端并不十分友好,借助于可视化界面的方式会更加直观一些,这里可以安装对应的客户端软件,推荐的话主要是EMQ X和MQTT.fx。前者是收费的可以试用,后者则是免费的。
EMQ X 是一个高性能的 MQTT 代理,支持多种协议和功能,适合用于生产环境。它也提供了 Windows 安装包。
1. 下载 EMQ X
访问 EMQ X 官方网站下载页面:Try EMQX Cloud or EMQX Enterprise for Free | Download EMQX,下载适用于 Windows 的安装包。
2. 安装 EMQ X
-
下载完成后,解压下载的文件。
-
打开解压后的文件夹,找到
emqx.exe
文件。
3. 启动 EMQ X
-
打开命令提示符(CMD)或 PowerShell。
-
进入 EMQ X 的安装目录:
cd C:\path\to\emqx
-
启动 EMQ X:
.\bin\emqx start
4. 测试 MQTT 连接
-
发布消息:
.\bin\emqx_ctl pub -t "test/topic" -m "Hello MQTT"
-
订阅消息:
.\bin\emqx_ctl sub -t "test/topic"
MQTT.fx 是一个功能强大的 MQTT 客户端工具,支持 Windows、Linux 和 macOS。它提供了图形化界面,方便测试和开发。
1. 下载 MQTT.fx
访问 MQTT.fx 官方网站下载页面:https://mqttfx.github.io/,下载适用于 Windows 的安装包。
2. 安装 MQTT.fx
-
下载完成后,运行安装程序并按照提示完成安装。
3. 配置 MQTT.fx
-
启动 MQTT.fx。
-
在连接设置中,输入代理的地址(例如
localhost
)和端口(例如1883
)。 -
点击“连接”按钮,连接到 MQTT 代理。
-
在“发布”或“订阅”选项卡中,输入主题和消息内容,进行测试。
接下来我们来实际测试,创建Topic为test/topic,终端发送消息:
客户端订阅对应的Topic,如下所示:
到这里整体的工作就完成了,后续可以进行对应的测试使用了。