本文為您介紹MQTT 5.0的新特性訊息到期。
功能介紹
MQTT 5.0中的訊息到期(Message Expiry Interval)功能,允許設定一條訊息在發布後能夠在Broker中存活的最長時間。如果這條訊息在指定的時間間隔內未能被送達至任何一個訂閱者,它將被Broker刪除,能夠確保訊息的即時性、避免傳遞過時資訊。
使用限制
如果沒有設定則預設不到期。
訊息到期時間最小不少於1分鐘,最大訊息到期時間不超過3天。
如果設定了到期時間但是小於1分鐘,則訊息的到期時間為1分鐘。如果設定了到期時間但是大於3天,則訊息的到期時間為3天。
應用情境
即時監控:在物聯網(IoT)儀錶盤或即時資料監控系統中使用,因為過時的感應器資料可能不再準確或相關。
時效性通訊:例如限時優惠或閃促的廣播,需要在一定時間內送達消費者,如果逾時就不再具有相關性。
緊急訊息:類似警報或安全通知,這些訊息如果沒有立即送達,逾時後就失去了意義。
訂單和交易處理:財務交易或訂單處理中的即時訊息,強調在特定時間內完成某項操作的重要性。
訊息樣本
假設一個IoT裝置,負責監控並上報工廠裝置的運行狀態。可以使用以下格式的MQTT訊息並設定到期時間,來確保只有最新狀態被處理:
PUBLISH
Topic: factory/machine1/status
Payload: RUNNING
QoS: 1
Message Expiry Interval: 300 // 訊息發布後保留5分鐘(300秒)的有效期間如果這條訊息在5分鐘內沒有被任何訂閱者接收,則它會從Broker隊列中被移除,以避免未來的訂閱者接收到這條過時的訊息。
另外,假設有一家電子商務公司需要發送關於限時優惠的訊息,會這樣操作:
PUBLISH
Topic: store/promotions
Payload: 50off-for-next-30-minutes
QoS: 1
Message Expiry Interval: 1800 // 30分鐘後優惠到期在這裡,如果該優惠訊息在30分鐘內沒能達到訂閱者,訊息將自動從Broker中刪除,因為它已經不再有效。
訊息到期間隔的主要好處是確保只有當前和最相關的資訊被傳遞給訂閱者。