如何解决mosquitto :代理停止向某些客户端发布但订阅正常
上下文:
- 在私有云上运行的 mosquitto 代理 1.5.7:
Debian 4.19.181-1 (2021-03-19) x86_64 GNU/Linux
mosquitto.conf 的摘录:
allow_anonymous false
password_file /etc/mosquitto/passwd
log_type all
提取他们的 nodeJS 配置:
reconnectPeriod: 30000 (ms)
keepalive: 300 (sec)
qos: 2
clean = false
(节点 mqtt 模块版本:3.0.0)
问题:
主题 xxx 上的 PUB/SUB 在最初几个小时内运行良好,但客户端 (SUB) 突然停止接收消息。 客户 (SUB) 与经纪商建立了良好的联系并订阅了该经纪商。
当我检查经纪人 #$SYS 时,我可以看到:
- "$SYS/broker/clients/active" 好的
- "$SYS/broker/clients/connected" OK(活动数量相同)
- "$SYS/broker/subscriptions/count/" 好的
当我查看“mosquitto 日志”时,我只能看到代理发布消息给我的 7 个 SUB 客户中的 3 个...所以可以理解我的其他 4 个客户从未收到该消息...
我该怎么做才能解决这个奇怪的问题?
感谢您的帮助。
解决方法
我终于找到了使我的架构正常工作的解决方案:我将所有设备的 Qos SUB 切换到 Qos1(而不是 Qos2)。
我的结论是,如果同一主题上有多个订阅者(在我的情况下为 7 个订阅者),则代理无法很好地管理 SUB 上的 Qos2。
在这种情况下:将 Qos SUB 转为 Qos 1 就可以了!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。