背景
最近需要做一个车载的远程数据采集。首先有个触发的信号,然后车端数据保存后回传到NFS服务器,因此需要做一个触发信号,于是想打了MQTT作为桥梁。
MQTT 可选择的开源软件很多。在连接设备数量小于10台的情况下,选择MQTT服务器时,可以优先考虑那些轻量级、易于部署和使用的开源软件 Eclipse Mosquitto
- 特点:Eclipse Mosquitto是一个轻量级的MQTT服务器,支持MQTT v3.1/v3.1.1/v5.0版本协议。它易于安装、配置和使用,非常适合资源受限的环境和小型项目。
- 优势:轻量级、高性能、可扩展,并且支持多种操作系统,包括Linux、macOS和Windows。
开干!!
1 服务端的搭建
就用 Docker 安装了算了,省事情。
# 拉取官方的Mosquitto Docker镜像
docker pull eclipse-mosquitto
docker run -d --name mosquitto -p 1883:1883 eclipse-mosquitto
然后进入容器,docker exec -it mosquitto sh
,进入/mosquitto/config
目录修改配置文件,建议参考成功的经验,不然还是需要琢磨的。上午瞎琢磨,搞了几个小时才搞好。
配置主要用了这些参数
allow_anonymous false
listener 1883
listener 9001
protocol websockets
persistence true
password_file /mosquitto/config/pwfile
persistence_file mosquitto.db
persistence_location /mosquitto/data/
然后添加用户,建议参考成功的经验
我添加了两个
user1 密码123456
user2 密码123456
服务端的测试
ubuntu 系统安装客户端 sudo apt install mosquitto-clients
然后订阅者启动mosquitto_sub -v -L mqtt://user1:123456@68.10.1.150:1883/test/topic
然后发布者启动 mosquitto_pub -L mqtt://user2:123456@68.10.1.150:1883/test/topic -m 'hello MQTT'
测试效果,可以看到订阅者会一直阻塞进程等待数据,发布者发送就退出了