mqtt协议之保留消息

保留消息

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对于保留消息的处理

image.png

参考文献

  1. mqtt协议文档
  2. EMQ的保留消息

你可能感兴趣的:(mqtt协议之保留消息)