【发布时间】:2023-04-25 08:51:01
【问题描述】:
我有一个本地 (OSX 11) mosquitto broker (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
【问题讨论】: