我在嵌入式應用程序中使用MQTT。我已經廣泛地閱讀了文檔,並且瞭解瞭如何在MQTT中實現QoS功能以及每個值的含義。MQTT QoS降級
如已知的,MQTT確實的QoS降級,這意味着消息將與發送者和接收者之間的最低QoS值來遞送。這是可以理解的,並且對於發送和接收之間的大多數QoS協議來說這是有意義的。
但是我遇到了特定情況的問題。當客戶訂購QoS 2時,如果消息以QoS 1發佈,會發生什麼情況?
該消息將被至少一次輸送到代理,這意味着它可以被遞送一次以上。另一方面,訂閱客戶期望它保證只接收一次消息,事實並非如此。
如何解決這個嚴重問題?基本上我不能相信QoS 2設置。
(注意,通常這不會是一個問題,因爲我可以只發布帶有QoS 2消息。然而這將成爲當發佈客戶是你無法控制的問題,而且也不能保證它的QoS他們會使用。)
所以基本上在亂我的控制發佈客戶我應該總是假設的QoS 0或QoS 1,但從來沒有QoS2,對不對? –