如何在 mosquitto broker 的 bridg.conf 文件中提及 will 消息设置

How to mention will message setting in bridg.conf file of mosquitto broker

我已经在 ubuntu 上安装了 mosquitto 代理,它被配置为在一个 IP 上发送所有消息。

下面是 bridge.conf 文件内容:

connection local-ubuntu
log_type all
address 192.168.0.5:1883
remote_username admin
remote_password admin
remote_clientid dev
try_private false
cleansession false
start_type automatic
bridge_insecure false
bridge_protocol_version mqttv311
bridge_tls_version tlsv1.2
notifications false
keepalive_interval 36000
autosave_interval 30

topic # out 2 test/topic/ test/topic/
topic # in 2 test/topic/ test/topic/

我正在将所有数据发送给代理,它成功地将所有数据发布到提到的 IP 地址机器上。

现在这台机器有时会宕机,因此从 MQTT 代理发送的消息不会在机器上接收并丢失。

我想在代理桥中处理这个场景。我读过,如果我们指定 will messages,那么它将保留所有未发送的消息,并在机器打开后发送它们。但是我无法为此找到合适的配置。

有没有人做过这种场景。请帮忙。谢谢

我认为你在这里混淆了许多不同的东西。

首先,Last Will and Testament 消息由客户端在连接到 broker 时设置,然后 broker 挂起此消息并仅在客户端连接中断时发布它(如果客户端完全断开连接则不会) .它对是否为该客户端排队消息没有影响。无法为代理的桥接配置 LWT。

其次,不需要 2 topic 行来配置桥接哪些主题,您可以用这一行替换这两行:

topic # both 2 test/topic/ test/topic/

现在,因为您已将主题桥接的 QOS 设置为 2,如果远程代理关闭,它应该已经在排队消息,一旦桥接恢复,它将转发这些消息。

如果您想查看桥的当前状态,您可以订阅 $SYS/broker/connection/<remote_clientid>/state 主题并设置 notifications true 选项

此外,您的网桥保持活动值(10 小时)太高,无法执行任何有用的操作。在 LAN 上,我会使用 10-30 秒之间的东西。