4. 搭建MQTT Broker环境:Mosquitto安装与配置(Windows/Linux)、EMQX简介、公共Broker测试
好,咱们进入实战环节。上一章聊了MQTT协议的基本原理,这一章咱们得把Broker跑起来。没有Broker,客户端之间就没法通信。我个人习惯先在本机搭一个Mosquitto,调试方便,出了问题也好排查。
4.1 为什么选Mosquitto?
Mosquitto是Eclipse基金会下的开源项目,轻量、稳定、跨平台。说白了,它就是MQTT世界的“Hello World”——几乎所有嵌入式开发者入门MQTT时,第一个接触的Broker就是它。
我在项目中遇到过几次选型纠结:用EMQX还是Mosquitto?如果是生产环境、高并发场景,EMQX更合适。但如果是开发调试、小规模部署,Mosquitto完全够用。你想想看,一个几百KB的二进制文件就能跑起来,多省心。
4.2 Windows下安装Mosquitto
Windows用户最省事。去官网下载安装包,一路Next就行。但我建议你注意两点:
- 安装时勾选“Service”选项,这样Mosquitto会作为Windows服务自动启动
- 安装路径不要带中文,避免一些莫名其妙的编码问题
安装完成后,打开命令提示符,输入:
net start mosquitto
如果看到“服务已启动成功”的提示,说明Broker已经在跑了。你可以用客户端工具连上去试试。
4.3 Linux下安装Mosquitto
Linux下安装更简单。以Ubuntu为例:
sudo apt update
sudo apt install mosquitto mosquitto-clients
安装完成后,Mosquitto会自动启动。你可以用以下命令检查状态:
sudo systemctl status mosquitto
如果看到“active (running)”,说明一切正常。嗯,这里要注意:默认配置下,Mosquitto只监听本地回环地址(127.0.0.1),外部设备是连不上的。你需要修改配置文件。
4.4 配置Mosquitto:从入门到能用
配置文件通常位于 /etc/mosquitto/mosquitto.conf(Linux)或安装目录下的 mosquitto.conf(Windows)。
最基本的配置,我建议你至少加上这几行:
listener 1883
allow_anonymous true
log_dest file /var/log/mosquitto/mosquitto.log
解释一下:
listener 1883:监听1883端口,这是MQTT的默认端口allow_anonymous true:允许匿名连接。调试阶段先开着,生产环境一定要关掉log_dest file:把日志写到文件里,方便排查问题
修改完配置后,重启Mosquitto:
sudo systemctl restart mosquitto
4.5 测试Mosquitto是否正常工作
用mosquitto自带的客户端工具测试一下。打开两个终端:
终端1(订阅者):
mosquitto_sub -h 127.0.0.1 -t "test/topic"
终端2(发布者):
mosquitto_pub -h 127.0.0.1 -t "test/topic" -m "Hello, MQTT!"
如果终端1收到了“Hello, MQTT!”,说明Broker工作正常。就是这么简单。
4.6 EMQX简介:当Mosquitto不够用时
Mosquitto虽然好用,但有些场景它确实力不从心。比如:
- 需要处理上万台设备同时在线
- 需要集群部署、高可用
- 需要规则引擎、数据持久化
这时候就该EMQX上场了。EMQX是用Erlang写的,天生就适合高并发场景。我参与过一个智慧农业项目,用了EMQX集群,同时处理5000多个传感器节点的数据,稳得很。
EMQX的安装也很简单,官方提供了Docker镜像:
docker pull emqx/emqx:latest
docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 18083:18083 emqx/emqx:latest
启动后,浏览器访问 http://localhost:18083,默认账号admin、密码public,就能看到EMQX的Web管理界面了。
4.7 公共Broker测试:快速验证你的客户端
有时候你手头没有服务器,或者只是想快速验证一下客户端代码能不能跑通。这时候可以用公共Broker。
常用的公共Broker有:
| Broker地址 | 端口 | 说明 |
|---|---|---|
| broker.emqx.io | 1883 | EMQX官方提供的测试Broker |
| test.mosquitto.org | 1883 | Mosquitto官方测试Broker |
| iot.eclipse.org | 1883 | Eclipse IoT测试Broker(已停用,仅供参考) |
用公共Broker测试时,主题命名最好加上自己的标识,比如 /test/你的名字/device1,避免和其他人冲突。
4.8 本章小结
这一章我们干了三件事:
- 在Windows和Linux上安装了Mosquitto
- 做了基本配置,让Broker能对外服务
- 了解了EMQX和公共Broker的用法
下一章,咱们就要让单片机真正连上Broker,开始收发消息了。到时候你会发现,前面这些准备工作有多重要。