欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MQTT 消息质量等级分析

程序员文章站 2022-03-06 08:21:41
qos 是发送方和接收方之间达成的协议,不是发布者和订阅者之间达成的协议。也就是说发布者 Publish 一条 qos = 1 的消息,只能保证 Broker 能至少收到一次这个消息,至于对应的订阅者能否至少收到一次这个消息,还要取决于订阅者在 Subscribe 的时候和 Broker 协商的 qos 等级。qos 为1 或者2时,消息会携带 messageId,qos 为 0 时没有。qos = 0,最多一次送达。也就是消息发出去就直接删除掉,没有后面的事情了。qos = 1,至少一次送达。发...

qos 是发送方和接收方之间达成的协议,不是发布者和订阅者之间达成的协议

也就是说发布者 Publish 一条 qos = 1 的消息,只能保证 Broker 能至少收到一次这个消息,至于对应的订阅者能否至少收到一次这个消息,还要取决于订阅者在 Subscribe 的时候和 Broker 协商的 qos 等级。

qos 为1 或者2时,消息会携带 messageId,qos 为 0 时没有

qos = 0,最多一次送达。也就是消息发出去就直接删除掉,没有后面的事情了。
qos = 1,至少一次送达。发送方消息发出去之后会将消息保存,等待接收方带 messageId 的回应,如果没有回应,就会重新发送,直到回应到达后再把消息删除。
qos = 2,准确一次送达。

  1. 发送方消息发送后保存发送的消息,等待接收方回应,如果没有回应将会再次发送。
  2. 接收方会记录收到的 messageId,之后再收到相同 messageId 的消息都会被丢弃掉。
  3. 接收方发送带 messageId 的确认消息,等待发送方的回应,如果没有等到发送方回应,接收方会重复发送确认消息。
  4. 发送方收到确认消息之后,删除发送的消息,并发送带 messageId 的已确认消息。
  5. 接收方接收已确认消息后删除确认消息。

本文地址:https://blog.csdn.net/myinsert/article/details/108360342