保留(retain)
保留是应用消息的一个属性,服务端会为每个发布的主题保留最后的一条消息,方便客户端网络断开恢复后,可以获取到该主题的最终状态。
- 保留属性与QoS属性相互独立。
- 保留消息与主题绑定,而QoS1、QoS2消息与会话绑定。保留消息不是会话状态的一部分。
- 服务端只会缓存每个主题的最后一条retain = 1消息的,retain = 0消息不会更新保留缓存。
- 客户端清除保留缓存的唯一办法是,发布一条长度为0的保留消息。
- 遗嘱如果设置了保留属性,每次遗嘱的发布都会更新保留缓存。
保留消息的发布时机
保留消息只会在网络重新连接的时候发布。