保留消息
1、保留消息的使用场景
以设备升级为例,假如我们要发布一个升级任务,以使得所有的设备都能在本次升级任务中完成升级。但是,当前却有一些设备不在线(由于网络原因等),这样的话,这些设备当前就无法接收到我们发送的消息。那么,我们想让这些设备在重新上线的时候,立即收到我之前发布的升级消息,并执行升级动作,这个时候,就需要用到保留消息了。
(这个有点类似于:电话留言,别人给你打电话的时候,你不在家,然后他就给你电话留言,以便于你在回到家之后,还能收到他的消息)
协议中的原文
```
Retained messages are useful where publishers send state messages on an irregular basis. A
new subscriber will receive the most recent state
```
2、保留消息的存储时间和数量限制
一个主题下面只能有一个保留消息,后来的保留消息会把现存的保留消息替换掉。
3、保留消息的移除
保留消息要么是被新的保留消息所替换,要么是被客户端主动移除。
协议中的原文
```
Retained messages do not form part of the Session state in the Server. The Server SHOULD retain such
messages until deleted by a Client
```
mqtt协议中关于保留消息的定义
image.png image.png具体实现中关于保留消息的处理
EMQ对于保留消息的处理
网友评论