1

我有一个使用以下配置运行的本地(OSX 11)蚊子代理(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 个终端。

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

B : 订阅本地代理mosquitto_sub -t in_topic

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

现在,当我这样做时,我会在AB中得到响应,这让我认为我的桥接正在工作。但是,如果我放弃,-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

4

2 回答 2

1

通过运行以下命令,您不会在终端A中得到任何东西

mosquitto_pub -t in_topic -m "hello world1"

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

topic out_topic out 0
于 2016-03-04T11:03:57.423 回答
0

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

notifications true

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

于 2016-03-04T14:15:15.037 回答