蚊子代理是否将 LWT 消息持久保存到磁盘,以便它们可以在重新启动之间恢复?

物联网 MQTT 蚊子
2021-06-02 09:23:52

我有两个 RaspberryPi,一个是蚊子经纪人,一个是客户。客户端已与代理建立了 LWT。在影响两个 RPi 的断电后,两个 RPis 重新联机,但从未发送 LWT。我预计它会被发送,因为从经纪人的角度来看,客户端不再接收 ping。我想知道这是不是因为蚊子没有将 LWT 持久化到磁盘(我的所有其他保留消息都存在)?如果是这样,我可以换蚊子来允许吗?

我的配置看起来像:

# Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example

pid_file /var/run/mosquitto.pid

persistence true
persistence_location /var/lib/mosquitto/

log_dest file /var/log/mosquitto/mosquitto.log

include_dir /etc/mosquitto/conf.d
autosave_interval 300
1个回答

LWT 是会话的一部分,mosquitto 将与会话的其余部分一起保存到数据库。

但是,如果两个 pi 都由于断电而失败,那么代理将永远不会有机会发送 LWT,因为两者都将与客户端同时离线,因此永远不会达到保持活动超时。

当它重新联机时,它不会为任何断开连接的客户端启动时钟,因为 keepalive 仅对当前连接的客户端有效,并且在重新启动时不会连接任何客户端。

因此,要回答最后一个问题,没有办法获得您正在寻找的行为。