訊息重傳
mqtt協議標準規範的一部分。
協議規定作為通訊雙方 服務端 和 客戶端 對於自己傳送到對端的 publish 訊息都應該滿足其 服務質量的要求。
qos 1:訊息至少送達一次;即傳送端會一直重發該訊息,除非收到了對端對該訊息的確認。是在mqtt協議的上層(即業務的應用層)相同qos1 訊息可能會受到多次。
qos 2:訊息只送達一次;即該訊息在上層僅會接收到一次。
注:qos 1 和qos 2 的publish 報文在mqtt協議棧這一層都會傳送重傳,
qos 1 訊息發生重傳後,在mqtt 協議棧上層,也會收到這些重發的publish訊息。
qos 2 訊息無論如何重傳,最終在mqtt協議棧上層,都只會收到一條publish訊息。。
訊息重發的兩種場景
1、publish 報文傳送給對端後,規定時間內未收到應答。則重發這個報文。
2、在保持會話的情況下,客戶端重連後; emqx會自動重發為應答的訊息,以確保qos 流程的正確。
檔案 etc/emqx.conf 中
retry_interval duration 預設 30s 等待乙個超時間隔,如果沒收到應答則重傳訊息。
協議規範與設計
重傳物件
qos 1 ,涉及2個報文,傳送端和接收端各傳送1次;這2個報文有相同的packetid。只需要對publish報文進行重發。
qos 2 , 涉及4個報文,傳送端和接收端各傳送2次;這4個報文有相同的packetid。需要傳送端對publish和pubrel報文進行重發。
MQTT訊息型別
客戶端到服務端的網路連線建立後,客戶端傳送給服務端的第乙個報文必須是connect報文 mqtt 3.1.0 1 在乙個網路連線上,客戶端只能傳送一次connect報文。服務端必須將客戶端傳送的第二個connect報文當作協議違規處理並斷開客戶端的連線 mqtt 3.1.0 2 有關錯誤處理的資訊請...
mqtt保留訊息
mqtt保留訊息 1個topic 主題 只有唯一的retain 保留 訊息,broker會儲存每個topic的最後一條retain訊息。每個client訂閱topic後會立即讀取到retain訊息,不必要等待傳送。訂閱topic時可以使用萬用字元,就會收到匹配的每個topic的retain訊息。如果...
android訊息推送 mqtt協議
對與訊息推送是什麼個概念,在此就不贅述啦。google自帶的c2md服務,可以幫助我們實現該功能,可以該伺服器在國外,所以鑑於網速等各種條件限制,我們也沒法實現。為解決該問題,在讀了大量的部落格等質料之後,終於見到啦陽光。第三個是由ibm提供的mqtt協議的實現,就相當於乙個 開啟1883埠,在se...