1.前言
Eclipse Mosquitto是一个开源(EPL/EDL许可)的消息代理,实现了MQTT协议的版本5.0、3.1.1和3.1。Mosquitto是轻量级的,适用于从低功耗单板计算机到完整服务器的所有设备。
MQTT协议提供了一种轻量级的消息传输方法,采用发布/订阅模型。这使得它非常适合用于物联网消息传递,例如低功耗传感器或手机、嵌入式计算机或微控制器等移动设备。
Mosquitto项目还提供了一个用于实现MQTT客户端的C库,以及非常流行的mosquitto_pub和mosquitto_sub命令行MQTT客户端。
Mosquitto是Eclipse Foundation的一部分,是iot.eclipse.org项目的一部分。该项目由Cedalo推动开发。
在GitHub上拥有8.3KStarts.项目的仓库地址为:mosquitto
2. docker 安装Eclipse Mosquitto
1、执行搜索指令找到官方镜像
docker search mosquitto
我们下载带有OFFICIAL标志的镜像
2、下载Image镜像
docker pull eclipse-mosquitto
3、配置映射目录
4、配置container容器到指定目录和映射端口
docker run -d --name my-mosquitto -p 1883:1883 -p 9001:9001 -v /d/docker/mosquitto/data:/mosquitto/data -v /d/docker/mosquitto/log:/mosquitto/log -v /d/docker/mosquitto/config:/mosquitto/config eclipse-mosquitto
创建配置文件,并且写入配置内容,保存完毕后重启。
listener 1883
listener 9001
protocol websockets
persistence true
persistence_file mosquitto.db
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
#Authentication
allow_anonymous true
password_file /mosquitto/config/pwfile
为了方便测试,我在这里开启了匿名访问allow_anonymous true。生产环境,应当改为False.
5、配置用户和密码
-
在config文件夹新增空文件pwfile.conf
-
查看容器
docker ps
- 进入容器,执行命令
docker exec -it b7c36ec27a62 sh
mosquitto_passwd -b /mosquitto/config/pwfile.conf root root
4. 查看生成密码文件内容
6、命令行测试
mosquitto_pub 和 mosquitto_sub 是 Mosquitto MQTT 代理的命令行客户端工具,用于发布(publish)和订阅(subscribe)MQTT 消息。
- mosquitto_pub:用于发布 MQTT 消息到指定的主题(topic)。
- mosquitto_sub:用于订阅 MQTT 主题,并接收对应主题下的消息。
这些工具通常用于测试 MQTT 代理的功能、与 MQTT 代理进行交互,或者在脚本中执行一些 MQTT 消息发布和订阅的操作。
它们的基本用法示例:
mosquitto_pub:
mosquitto_pub -h <hostname> -t <topic> -m "message"
其中:
- 是 MQTT 代理的主机名或 IP 地址。
- 是要发布消息到的 MQTT 主题。
- “message” 是要发布的消息内容。
mosquitto_sub:
mosquitto_sub -h <hostname> -t <topic>
其中:
- 是 MQTT 代理的主机名或 IP 地址。
- 是要订阅的 MQTT 主题。
使用这些命令,可以轻松地在命令行界面上与 MQTT 代理进行通信,发布和订阅消息。
7、测试步骤:
- 进入容器,打开命令窗口,执行订阅命令
mosquitto_sub -h localhost -t topic
- 进入容器,开启新的命令窗口,执行发布命令
mosquitto_pub -h localhost -t topic -m "message"
- 展示执行结果
3. 配置客户端
- 下载mqtt.fx客户端进行连接测试。直达下载链接
- 配置连接
- 测试连接
连接成功,发布Key,值为value-2024
订阅Key,接收值为:
4.其他安装方法
- 应用程序安装
如果你觉得Docker安装Eclipse Mosquitto比较麻烦的话,也可以直接安装应用程序。官网详细介绍安装步骤:
How to Install the Mosquitto MQTT Broker on Windows? - IoTEDU
- Docker Compose安装
此文章有详细的安装教学:Setting up the Mosquitto MQTT Broker using Docker Compose - Pi My Life Up
docker-compose 代码如下:
services:
mosquitto:
image: eclipse-mosquitto
container_name: mosquitto
volumes:
- ./config:/mosquitto/config
- ./data:/mosquitto/data
- ./log:/mosquitto/log
ports:
- 1883:1883
- 9001:9001
stdin_open: true
tty: true
其他配置步骤类似。
5. 总结
环境安装只是开发的第一步,后续我们将在此基础上进行MQTT的开发。