场景分析
某个mqtt客户端A每小时向某个特定的topic发布一条消息,所有订阅这个topic
的客户端将会收到该消息,这是正常流程,如果客户端A刚刚发布消息, 此时有一
个新的客户端B订阅该topic,也就是“订阅”是在“发布”后,这个时候客户端B将接收
不到该消息。
Retain 功能就是为了解决这一问题,当客户端A发布小时时,将 retain
标志置1,那么broker就会保存该消息,当有新的客户端订阅该topic时,会立刻
将该条消息推送给客户端B。
所以官方的协议中是这样介绍该功能:“如果客户端发给服务端的 PUBLISH
报文的保留(RETAIN)标志被设置为 1,服务端 必须存储这个应用消息和它的
服务质量等级(QoS),以便它可以被分发给未来的主题名匹配的订阅者”
Retain 功能特点
1、一个topic只能有1条Retain消息,新的Retain消息会覆盖旧的。
2、删除一个Retain消息,可以向这个topic发布一个长度为0的
Retain 消息即可。