MQTT協議:Retain (保留訊息)功能分析小結
阿新 • • 發佈:2020-12-25
技術標籤:MQTT
場景分析
某個mqtt客戶端A每小時向某個特定的topic釋出一條訊息,所有訂閱這個topic 的客戶端將會收到該訊息,這是正常流程,如果客戶端A剛剛釋出訊息, 此時有一 個新的客戶端B訂閱該topic,也就是“訂閱”是在“釋出”後,這個時候客戶端B將接收 不到該訊息。 Retain 功能就是為了解決這一問題,當客戶端A釋出小時時,將 retain 標誌置1,那麼broker就會儲存該訊息,當有新的客戶端訂閱該topic時,會立刻 將該條訊息推送給客戶端B。 所以官方的協議中是這樣介紹該功能:“如果客戶端發給服務端的 PUBLISH 報文的保留(RETAIN)標誌被設定為 1,服務端 必須儲存這個應用訊息和它的 服務質量等級(QoS),以便它可以被分發給未來的主題名匹配的訂閱者”
Retain 功能特點
1、一個topic只能有1條Retain訊息,新的Retain訊息會覆蓋舊的。
2、刪除一個Retain訊息,可以向這個topic釋出一個長度為0的
Retain 訊息即可。