我已经安装了mosquitto
ubuntu 上的代理,配置为在 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 代理发送的消息在机器上没有收到并且丢失了。
我想在代理网桥中处理这种情况。我已经阅读过,如果我们指定将消息,那么它将保留所有未传递的消息,并在机器开启后传递它们。但我无法为此找到合适的配置。
有没有办法在这种情况下工作过。请帮忙。谢谢
最佳答案
我认为你在这里混淆了许多不同的东西。
首先,当客户端连接到代理时,客户端会设置最后的遗嘱和遗嘱消息,然后代理会卡在此消息上,并且仅在客户端连接中断时才发布它(如果客户端完全断开连接)。它对是否为该客户端排队的消息没有影响。无法为代理的网桥连接配置 LWT。
其次,不需要 2 topic
用于配置桥接哪些主题的行,您可以将这两行替换为以下行:
topic # both 2 test/topic/ test/topic/
现在因为您将主题桥接的 QOS 设置为
2
如果远程代理关闭,它应该已经在排队消息,一旦网桥恢复,它将转发这些消息。如果您想查看网桥的当前状态,您可以订阅
$SYS/broker/connection/<remote_clientid>/state
已设置 notifications true
的主题选项此外,您的网桥保活值(10 小时)太高,无法做任何有用的事情。在 LAN 上,我会使用 10-30 秒之间的时间。
关于ubuntu - 如何在 mosquitto broker 的 bridg.conf 文件中提及 will 消息设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62302821/