mqtt 消息重傳


消息重傳
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報文進行重發。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM