简单说:发布保留标识。表示服务器要保留这次推送的信息,如果有新的订阅者出现,就把这消息推送给它,如果设0那么推送至当前订阅者后释放。
Retained 消息是指在 PUBLISH 数据包中 Retain 表示为 1 的消息,Broker 收到消息后,将会为该主题保存该 Retained 消息。当有新的订阅者订阅该主题时,Broker 会将这个消息立即发送给新的订阅者。
Retained 消息存在以下特点:
一个 topic 只能存在一条 Retained 消息,发布新的 Retained 消息将会覆盖旧消息;
若订阅者使用通配符订阅主题,那么该订阅者将会收到所有的匹配主题的 Retained 消息;
只有新的订阅者才能够收到 Retained 消息;
需要注意:Retained 消息与持久会话没有任何关系。Retained 消息针对主题 topic,Broker 为每一个 topic 单独存储;持久会话针对客户端 Client,Broker 为每一个 Client 单独存储。
当 Retained 消息发送到订阅者时,PUBLISH 数据包中的 Retain 字段仍然为 1,订阅者可以根据该字段判断该消息是否是 Retained 消息从而进行相应的处理。