因此,我设置了两个 MQTT 代理 [例如“A”和“B”](使用云 mqtt 设置),其中“B”桥接到“A”(通过双向桥接)。当我将主题发布到“A”时,它会显示在“A”下,然后显示在“B”下(如预期)。但是,如果我发布到“B”,它会显示在“B”下,然后在“A”下,然后在“B”下会看到重复的发布。是否有一些我需要设置或设置我需要更改以防止这种情况发生的标志?
你是如何启动桥梁的?
您需要为连接定义本地前缀和不同的远程前缀。不要将其与“本地”或“远程”的含义混为一谈,而是将它们作为应该镜像到其他经纪人的那些分支的名称。这可以防止代理一次又一次地循环相同的消息。
假设您的“A”经纪人通过分支订单/命令发送命令,而您的“B”经纪人在家中/传感器保存传感器值
然后,如果您向代理“A”上的 order/command/ 发布消息,您将在代理“B”的同一分支 order/command/ 下看到此消息。
此外,每个可能发布到代理“B”的 home/sensor/ 的传感器值都将被镜像到代理“A”的 home/sensor/
mosquitto.conf:(树莓“A”是 192.168.1.100)
connection raspi-PC
address 192.168.1.110:1883
topic # both 0 order/command/ home/sensor/
然后这将起作用:
client1 : mosquitto_sub -h 192.168.1.110 -t order/command/#
client2 : mosquitto_sub -h 192.168.1.100 -t home/sensor/#
clientA : mosquitto_pub -t order/command/message -m "Hello from A"
clientB : mosquitto_pub -t home/sensor/temp -m "22.5C"
client1 --> order/command/message/"Hello from A"
client2 --> home/sensor/temp/"22.5C"
您会看到 client1 和 client2 是代理“A”和“B”的交叉订阅者,它们获取所有分支和子分支消息,但它们不一定是代理本地的。
在 clientA 和 clientB 上,我使用本地客户端将消息发送到本地代理。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句