验证本地mosquitto MQTT Broker是否桥接到test.mosquitto.org

时间:2016-03-04 10:35:39

标签: mqtt mosquitto ruby-mqtt

我有一个使用以下配置运行的本地(OSX 11)mosquitto代理(1.4.7):

connection test
address test.mosquitto.org
topic in_topic in 0
topic out_topic out 0
try_private false
notifications false
bridge_attempt_unsubscribe true

我在这里得到了conf设置表单:bridge local mosquitto to cloud broker(谢谢)

我现在有3个终端。

A :使用ruby脚本和ruby-mqtt直接订阅test.mosquitto.org。

B :订阅了mosquitto_sub -t in_topic

的本地经纪商

C :使用此命令发布:mosquitto_pub -h test.mosquitto.org -t in_topic -m "hello world1"

现在,当我这样做时,我会在 A B 中得到回复,这样我就会认为我的桥接连接正常。但是,如果我放弃-h test.mosquitto.org,我就不会收到来自 A 的消息。因此,如果我包含-h选项,则该消息仅发送给该代理(test.mosquitto.org)。

另一方面,如果我停止本地mosquitto代理然后运行包含-h选项的相同命令,那么 A 仍然会收到消息并且 B 没有。 B 实际上甚至没有启动,因为连接被拒绝,因为本地代理没有运行。

所以,我的问题是,这种配置是否真的确定了经纪人的桥接?我不确定。

更新 正如hardillb指出我的错误是我用于发布的主题未配置为发布到其他代理。当我将conf更新为topic in_topic out 0时,我成功直接从test.mosquitto.org代理获取消息,而不包括-h test.mosquitto.org。消息根据配置传播。

我错误的文档可以在这里的桥接部分找到:http://mosquitto.org/man/mosquitto-conf-5.html

2 个答案:

答案 0 :(得分:1)

您不会在终端 A 中获得运行以下

的任何内容
mosquitto_pub -t in_topic -m "hello world1"

因为您的网桥设置为仅将out_topic上的内容从本地代理转发到远程(test.mosquitto.org)

topic out_topic out 0

答案 1 :(得分:0)

如果可以,我会更改您的配置:

notifications true

这将发布到$ SYS / broker / connections // state - 取决于连接是否处于活动状态,为1或0。这在远程和本地代理上都会发生。