Mosquitto 是轻量级 MQTT Broker,适合学习、边缘设备、小型项目、单机场景和快速测试。它比 EMQX 更轻,但 Dashboard、规则引擎和集群能力需要额外方案。
Ubuntu 安装
1 | sudo apt update |
测试服务:
1 | systemctl status mosquitto |
Docker 快速测试
1 | docker run -d --name mosquitto \ |
生产环境建议挂载配置和数据目录:
1 | docker run -d --name mosquitto \ |
基础配置
mosquitto.conf 示例:
1 | listener 1883 |
Mosquitto 2.x 默认安全策略更严格。需要远程连接时,要显式配置 listener 和认证策略。
创建密码
安装了客户端工具后:
1 | mosquitto_passwd -c passwd user |
追加用户:
1 | mosquitto_passwd passwd another_user |
Docker 场景要确保 password_file 路径和容器内路径一致。
发布订阅测试
订阅:
1 | mosquitto_sub -h 127.0.0.1 -p 1883 -u user -P password -t 'test/#' -v |
发布:
1 | mosquitto_pub -h 127.0.0.1 -p 1883 -u user -P password -t 'test/hello' -m 'hello mosquitto' |
测试 retained:
1 | mosquitto_pub -h 127.0.0.1 -p 1883 -u user -P password -r -t 'device/001/status' -m 'online' |
清理 retained:
1 | mosquitto_pub -h 127.0.0.1 -p 1883 -u user -P password -r -n -t 'device/001/status' |
常见问题
| 问题 | 常见原因 | 处理方向 |
|---|---|---|
| 只能本机连接 | 未配置 listener 或防火墙未开放 | 配置 listener 1883,检查安全组 |
Connection Refused: not authorised |
用户名密码错误或配置未加载 | 检查 password_file 和日志 |
| Docker 配置不生效 | 挂载路径错误 | docker inspect 检查挂载 |
| 日志找不到 | 未配置 log_dest 或容器未挂载日志目录 |
配置日志路径 |
| retained 消息一直存在 | 没有清理 retained | 发布空 retained 消息 |
| 客户端频繁掉线 | keepalive、网络、电源或 Client ID 冲突 | 看 Broker 日志和设备日志 |