第一步:准备三台机器
第二步:在网上拉取镜像 docker pull eclipse-mosquitto
第三步:在主机器上的/opt/mosquittoconf/ 下建立 mosquitto.conf
放入
connection mytest1
address 从机器1ip地址:1883
topic room1/# both 2 sensor/ myhouse/
connection mytest2
address 从机器2ip地址:1883
topic room1/# both 2 sensor/ myhouse/
bridge_protocol_version mqttv311
notifications true
cleansession true
try_private true
start_type automatic
解释:
connection 连接名称,可以随便取
address 连接的另外服务器地址和端口号,如果有多台服务器,可以写多个address
topic 主题名称,“#”为通配符,表示发布端可以在room1/后面接任何文字
both 服务质量,2代表只有一次(可以查看第一篇博文对MQTT的详细介绍)
sensor/ 本地前缀标识,可以随便命名
myhouse/ 远程前缀标识,可以随便命名
bridge_protocol_version mqttv311 桥连接协议版本MQTT3.11
notifications 是否发布桥接的状态信息
cleansession 桥接断开时,是否清除远程服务器中的消息
start_type 桥接模式,目前有三种:automatic、lazy、once
设置好之后保存退出。
第四步:继续创建 config.mk
内容参考 https://github.com/eclipse/mosquitto/blob/master/config.mk
找到WITH_BRIDGE:=yes 将签名的“#”号去掉开启桥连接模式。(默认是开启的,为了无误查看一下)
第五步:然后在两个从机器上启动
docker run -d --name mytest12 -p 1883:1883 -p 9001:9001 eclipse-mosquitto
第六步:然后再启动主机器上的
docker run -d --name mqtttest -p 1883:1883 -p 9001:9001 -v /opt/mosquittoconf/mosquitto.conf:/mosquitto/config/mosquitto.conf -v /opt/mosquittoconf/config.mk:/mosquitto/config/config.mk eclipse-mosquitto
第七步:进入容器查看
docker exec -it 容器名 /bin/sh