mosquitto:经纪人停止向某些客户发布但订阅正常
mosquitto : broker stop publish to some clients but subscription ok
上下文:
- 私有云上的 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
- X 客户端(nodeJS mqtt 包)SUB on the same topic xxx
他们的 nodeJS 配置摘录:
reconnectPeriod: 30000 (ms)
keepalive: 300 (sec)
qos: 2
clean = false
(节点mqtt模块版本:3.0.0)
- 关于主题 xxx 的 QoS2 中的另一个客户端 PUB
问题:
PUB/SUB 主题 xxx 在最初几个小时内运行良好,但客户端 (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 就可以正常工作了!
上下文:
- 私有云上的 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
- X 客户端(nodeJS mqtt 包)SUB on the same topic xxx
他们的 nodeJS 配置摘录:
reconnectPeriod: 30000 (ms)
keepalive: 300 (sec)
qos: 2
clean = false
(节点mqtt模块版本:3.0.0)
- 关于主题 xxx 的 QoS2 中的另一个客户端 PUB
问题:
PUB/SUB 主题 xxx 在最初几个小时内运行良好,但客户端 (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 就可以正常工作了!