1. 程式人生 > >MQTT QOS等級訂閱和釋出的關係

MQTT QOS等級訂閱和釋出的關係

釋出publish和訂閱subscribe都可以指定qos等級。
pub時指定的qos是跟伺服器有關係的,比如qos2時,是保證伺服器只收到一次,而不是最終的訂閱者。
訂閱者在sub時雖然指定了qos,但是收到的訊息不一定就是指定qos等級的訊息,而可能是降級的了。
為響應訂閱而發出的訊息的有效載荷的QoS必須是原始釋出訊息的QoS和服務端授予的QoS兩者中的最小值。
比如sub qos2,pub qos0,此時伺服器轉發的訊息是qos0級別也就是sub可能收到一次訊息也可能收不到。
再如sub qos0, pub qos2,此時伺服器轉發的訊息也是qos0級別,sub也是可能只收到一次訊息或者收不到。
也就是伺服器只會按pub和sub兩者qos等級最小的那個qos規則來發送訊息。

pub時指定的qos是伺服器肯定按此規則接收,但是最終訂閱者不一定。
sub時指定的qos表示訂閱者可以接收的最高訊息等級,也就是可能收到更低等級的訊息。