為了滿足不同的場(chǎng)景贩虾,MQTT支持三種不同級(jí)別的服務(wù)質(zhì)量(Quality of Service闯估,QoS)為不同場(chǎng)景提供消息可靠性:
- 級(jí)別0:盡力而為寞宫。消息發(fā)送者會(huì)想盡辦法發(fā)送消息,但是遇到意外并不會(huì)重試崇摄。
- 級(jí)別1:至少一次擎值。消息接收者如果沒有知會(huì)或者知會(huì)本身丟失,消息發(fā)送者會(huì)再次發(fā)送以保證消息接收者至少會(huì)收到一次逐抑,當(dāng)然可能造成重復(fù)消息鸠儿。
- 級(jí)別2:恰好一次。保證這種語義肯待會(huì)減少并發(fā)或者增加延時(shí)厕氨,不過丟失或者重復(fù)消息是不可接受的時(shí)候进每,級(jí)別2是最合適的汹粤。
服務(wù)質(zhì)量是個(gè)老話題了。級(jí)別2所提供的不重不丟很多情況下是最理想的品追,不過往返多次的確認(rèn)一定對(duì)并發(fā)和延遲帶來影響玄括。級(jí)別1提供的至少一次語義在日志處理這種場(chǎng)景下是完全OK的,所以像Kafka這類的系統(tǒng)利用這一特點(diǎn)減少確認(rèn)從而大大提高了并發(fā)肉瓦。級(jí)別0適合雞肋數(shù)據(jù)場(chǎng)景遭京,食之無味棄之可惜,就這么著吧泞莉。