保留訊息用於確保新訂閱Topic的裝置能及時收到最新狀態的訊息,即使訊息在裝置訂閱之前發布。服務端向Topic發布訊息時,如果訊息攜帶保留標記(Retain),物聯網平台將會儲存這個訊息並即時發布給訂閱者,後續訂閱該Topic的裝置都會收到保留訊息。保留訊息在MQTT 3.1.1標準中就已定義,阿里雲物聯網平台在MQTT 5.0接入時支援這個特性。本文為您介紹保留訊息的概念、互動過程和使用情境。
保留訊息
更新保留訊息:
使用相同的Topic發布新的訊息,Payload內容會被新的訊息所覆蓋。
保留訊息支援批量裝置發布時攜帶保留標記,裝置是否線上不影響保留訊息發布。
刪除保留訊息:
重新發布一條相同話題的訊息Payload為空白,即可刪除保留訊息。
設定訊息到期的時間間隔,訊息到期後即可刪除保留訊息。如果訊息內容一段時間後失效例如溫度控制,請結合訊息到期特性一起使用。
保留訊息與會話到期無關。即使會話到期,也不影響保留訊息。
使用情境
保留訊息適合於離線裝置的配置情境,例如廣告屏深夜休眠白天開啟,每天更新廣告內容,裝置主動請求的效率低於服務端主動發布推送。為了節能,裝置會休眠進入離線狀態,商務服務端輪詢推送內容可能會失敗,使用保留訊息可以解決這個問題,確保裝置下次上線時可以接收到新的訊息。