如何在蚊子经纪人的bridg.conf文件中提到将消息设置为。

问题描述 投票:0回答:1

我已经安装了 mosquitto broker,它被配置为在一个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/

我把所有的数据都发给了broker,它成功地把所有的数据发布到了上述IP地址的机器上。

现在有的时候这台机器宕机了,由于这台机器没有收到MQTT broker发送的消息,丢失了。

我想在broker的桥中处理这种情况。我读到如果我们指定了将消息,那么它将保留所有没有发送的消息,一旦机器开机就会发送。但我无法找到合适的配置。

是否有任何方式谁已经工作在这种类型的情况下。请大家帮忙。谅谅

ubuntu mqtt mosquitto broker
1个回答
2
投票

我认为你把一些不同的东西混为一谈了。

首先,最后的遗嘱消息是由客户端连接到broker时设置的,然后broker会挂在这个消息上,只有当客户端连接中断时才会发布这个消息(如果客户端干净利落地断开连接则不会)。它对这个客户端是否有消息排队没有影响。没有办法为经纪人的桥接配置一个LWT。

其次,没有必要为2个 topic 行来配置哪些主题会被桥接,你可以用这一行来替换这两行。

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

现在因为你已经把话题桥接的QOS设置为 2 它应该已经在排队等候消息,如果远程经纪商停机,一旦网桥恢复,它将转发这些消息。

如果你想查看网桥的当前状态,你可以订阅到 $SYS/broker/connection/<remote_clientid>/state 题,并设置了 notifications true 选择权

另外,你的网桥的keepalive值(10小时)太高了,不能做任何有用的事情。在局域网中,我会使用10-30秒之间的东西。

© www.soinside.com 2019 - 2024. All rights reserved.