保留消息用于确保新订阅Topic的设备能及时收到最新状态的消息,即使消息在设备订阅之前发布。服务端向Topic发布消息时,如果消息携带保留标记(Retain),物联网平台将会保存这个消息并实时发布给订阅者,后续订阅该Topic的设备都会收到保留消息。保留消息在MQTT 3.1.1标准中就已定义,阿里云物联网平台在MQTT 5.0接入时支持这个特性。本文为您介绍保留消息的概念、交互过程和使用场景。
保留消息
更新保留消息:
使用相同的Topic发布新的消息,Payload内容会被新的消息所覆盖。
保留消息支持批量设备发布时携带保留标记,设备是否在线不影响保留消息发布。
删除保留消息:
重新发布一条相同话题的消息Payload为空,即可删除保留消息。
设置消息过期的时间间隔,消息过期后即可删除保留消息。如果消息内容一段时间后失效例如温度控制,请结合消息过期特性一起使用。
保留消息与会话过期无关。即使会话过期,也不影响保留消息。
使用场景
保留消息适合于离线设备的配置场景,例如广告屏深夜休眠白天开启,每天更新广告内容,设备主动请求的效率低于服务端主动发布推送。为了节能,设备会休眠进入离线状态,业务服务端轮询推送内容可能会失败,使用保留消息可以解决这个问题,确保设备下次上线时可以接收到新的消息。