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,准确一次送达。
- 发送方消息发送后保存发送的消息,等待接收方回应,如果没有回应将会再次发送。
- 接收方会记录收到的 messageId,之后再收到相同 messageId 的消息都会被丢弃掉。
- 接收方发送带 messageId 的确认消息,等待发送方的回应,如果没有等到发送方回应,接收方会重复发送确认消息。
- 发送方收到确认消息之后,删除发送的消息,并发送带 messageId 的已确认消息。
- 接收方接收已确认消息后删除确认消息。
本文地址:https://blog.csdn.net/myinsert/article/details/108360342
上一篇: 华为机试(3) 明明的随机数
下一篇: 怎么拆解笔记本?新手拆解笔记本注意事项