Qos 0/1/2的理解

Qos 0/1/2的理解

Qos 0

最多一次的傳輸 消息是基於TCP/IP網絡傳輸的。沒有迴應,在協議中也沒有定義重傳的語義。消息可能到達服務器1次,也可能根本不會到達。緩存

 

 

Qos 1

至少一次的傳輸 服務器接收到消息會被確認,經過傳輸一個PUBACK信息。若是有一個能夠辨認的傳輸失敗,不管是通信鏈接仍是發送設備,仍是過了一段時間確認信息沒有收到,發送方都會將消息頭的DUP位置1,而後再次發送消息。消息最少一次到達服務器。SUBSCRIBE和UNSUBSCRIBE都使用level 1 的QoS。 若是客戶端沒有接收到PUBACK信息(不管是應用定義的超時,仍是檢測到失敗而後通信session重啓),客戶端都會再次發送PUBLISH信息,而且將DUP位置1。 當它從客戶端接收到重複的數據,服務器從新發送消息給訂閱者,而且發送另外一個PUBACK消息。服務器

筆者作了一個實現消費端阻塞2秒消費一個內容,發佈端1秒發佈一個內容,等EMQ的最大擁塞使用完了以後消息在EMQ緩存的會後就會出現不少的重複消息網絡

 

Qos 2

只有一次的傳輸 在QoS level 1上附加的協議流保證了重複的消息不會傳送到接收的應用。這是最高級別的傳輸,當重複的消息不被容許的狀況下使用。這樣增長了網絡流量,可是它一般是能夠接受的,由於消息內容很重要。 QoS level 2在消息頭有Message ID。session

 

 

出處:https://my.oschina.net/wenzhenxi/blog/1795750.net

相關文章
相關標籤/搜索