ThingsBoard CE MQTT下行消息重发问题排查(QoS=0、retain=false)
ThingsBoard CE MQTT下行消息重复推送异常
问题描述
发送下行消息后,消息始终滞留在Mosquitto代理中。每当设备重新订阅主题时,都会再次收到同一下行消息,尽管已满足以下配置:
- 消息以
QoS=0、retain=false发送 - ThingsBoard中的MQTT集成配置为
clean session=true、retain=false - Mosquitto日志明确标注
d0, q0, r0, m0(确认消息QoS为0且无保留属性)
Mosquitto日志片段:
Client mosq-S23jDV4ztdEWQMhECs received PUBLISH (d0, q0, r0, m0, 'v1/gateway/downlink', ... (1 bytes)) v1/gateway/downlink 1
测试用例
- 通过Python脚本(基于Paho MQTT库)发送同一下行消息时,表现正常,无重复推送情况
- 仅ThingsBoard发送的消息存在重复推送问题
环境详情
ThingsBoard CE 3.9.0 Mosquitto 3.1.1 ubuntu@WOLKELAB-APP:~$ sudo systemctl status mosquitto.service mosquitto.service - Mosquitto MQTT v3.1/v3.1.1 BrokerTopic: v1/gateway/downlink
已排查项
- ✅ 验证Mosquitto无全局保留策略
- ✅ 确认ThingsBoard中无触发消息重复发送的持久化脚本
- ✅ 测试不同MQTT客户端,仅ThingsBoard发送的消息存在重复问题
- ✅ 确保设备端未进行重复订阅操作
问题咨询
为何仅ThingsBoard发送的消息会在设备每次重订阅时重复推送,尽管已配置为非持久化?
- 代理版本与ThingsBoard的MQTT服务是否存在兼容性问题?
- ThingsBoard 3.9.0的MQTT会话处理是否存在已知问题?
- 有无可行的解决方法实现真正的“即发即弃”下行消息?
内容的提问来源于stack exchange,提问作者Wolke
相关产品推荐
相关产品推荐

