2015-11-02 23 views
2

我是新來MQTT,我只是瞭解了QOS等級的含義是決定當消息被髮布:瞭解MQTT用戶QoS

  • ,當我們希望此消息將不會到達在所有的,而不是到達兩次
  • 1時,我們希望消息至少一次到達,但如果它到達兩次不在乎(或更多)
  • 當我們想要的信息準確地到達一次 。 更高的QoS的值意味着更慢的傳輸

我注意到,用戶側也可以設置「最大QOS級別他們將收到」。 從here引用:

例如,如果一個消息在服務質量2發佈和客戶端訂閱具有QoS 0,該消息將被遞送到該客戶端具有QoS 0

不這意味着儘管發佈者將它與QOS 2一起發送,該消息可能不會到達客戶端(QOS 0)?

這可能是缺乏經驗的開發人員的一個大問題 - 例如,npm mqtt package中訂閱功能的默認QOS爲0! (在我看來,默認值應該是最大值2,即「讓出版商決定QOS」)。

回答

3

您是對的,但不能保證在QoS 2發佈的消息將到達使用QoS 0的訂戶。如果該訂戶接收該消息很重要,則應該使用QoS 1或2 。這是決定任何給定應用程序的東西。

我會重寫您的QoS 0的定義爲「最多一次」,即消息將被接收或它不會,沒有重複的機會。

關於默認QoS - 我認爲大多數客戶端使用QoS 0作爲默認值。我沒有看到將QoS 1或2設置爲默認設置可以幫助缺乏經驗的開發人員,但他們仍然需要了解他們爲什麼以及他們在做什麼,並考慮對其應用程序的影響。

+0

嗨,如何手動設置QoS 1或2到mqtt? –