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

Verify that local mosquitto MQTT Broker is bridged to test.mosquitto.org

我有一个本地 (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"

现在,当我这样做时,我会在 AB 中得到响应,这让我觉得我的桥接连接正在工作。但是,如果我删除 -h test.mosquitto.org,我不会从 A 收到消息。因此,如果我包含 -h 选项,消息只会发送给该代理 (test.mosquitto.org)。

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

所以,我的问题是,此配置是否真的确定代理正在桥接?我不知道。

更新: 正如 hardillb 指出的那样,我的错误是我用来发布的主题没有配置为发布到其他代理。当我将 conf 更新为 topic in_topic out 0 时,我成功地直接从 test.mosquitto.org 代理获取了消息,换句话说,没有包含 -h test.mosquitto.org。消息根据配置传播。

可以在此处的桥接部分找到有关我出错的文档:http://mosquitto.org/man/mosquitto-conf-5.html

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

得到任何东西
mosquitto_pub -t in_topic -m "hello world1"

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

topic out_topic out 0

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

notifications true

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