李璐超
发布于 2023-12-28 / 0 阅读 / 0 评论 / 0 点赞

解决MQTT消息每次重连都会有保留的历史消息

如何解决MQTT消息每次重连都会有保留的历史消息下发?

问题描述:MQTTX工具每次用户进行重新连接都会导致带有retained标签的mqtt消息重新下发一次,这样如果每个topic都有一条带有retained标签的信息,会导致客户端每次连接时需要同时节后很多信息,可能会导致系统崩溃
在官方协议中是这样描述Retain的:如果客户端发给服务端的 PUBLISH 报文的保留(RETAIN)标志被设置为 1,服务端 必须存储这个应用消息和它的 服务质量等级(QoS),以便它可以被分发给未来的主题名匹配的订阅者

Retain功能特点:一个topic只能有1条Retain消息,新的Retain消息会覆盖旧的。

所以解决方法如下:删除Retain消息:向带有该Retained标签的topic发送一条长度为0的标签带有Retain的空信息,即可解决

再次重连,已无之前的历史保留信息:


评论