项目场景:
mqtt订阅之后有时候收不到消息
使用测试工具发订阅消息
问题描述
mqtt订阅之后有时候收不到消息
原因分析:
cleanSession: true
每次客户端 连接到 MQTT Broker 时,都会创建一个新的会话,原来的订阅、未完成的 QoS1、QoS2 消息会全部丢弃。
解决方案:
cleanSession: false
- 持久化会话,当客户端断开后,Broker 仍然会保留客户端的订阅关系和 QoS1/QoS2 等未收到的消息。
- 断线后,Broker 会继续为该客户端缓存消息,下次该客户端用同一个
clientId
重新连接后,会收到断线期间的消息。