概览
MQTT5.0协议对部分QoS报文,以及报文处理的流程做了一些升级,本文对此这部分升级的内容做简单的介绍。
QOS报文格式及处理流程
在 MQTT 协议中,消息分为 3 个等级,分别用 QoS0, QoS1, QoS2, 这三个不同的 QoS 值所代表的是不同
的服务质量等级。以下是每一个服务质量级别的具体描述:
0 : 最多一次发送(若消息等级为 QoS 0,发布者在发布消息时只会发送一次,不管消息是否送达);
1 : 至少一次消息发送(若消息等级为 QoS 1,发布者在发布消息时会重复发送以确保消息发送成功);
2 : 消息只发送一次,并保证送达。(若消息等级为 QoS 2, 发布者在发布消息时确保接收者只接收到一个消息并且消息不会重复)。
在三种 QoS 消息等级中,QoS 0 是最节省计算资源的, 而 QoS 1 在发布完消息后还需要去接收到一个发布确认报文来停止重复的报文发送, QoS 2 消息的传输则需要更多的步骤,它需要 4 次报文发送来确保消息是单次送达的,是所有消息类型中最费计算资源和带宽的。
以下是 3 种不同 QoS 值的处理流程图:
在 MQTT 3.0 中,QoS 0的消息发布流程是这样
QoS 0 消息
发送者
控制报文流向
接受者
PUBLISH QoS = 0, DUP = 0
—>
接收消息(可能不会收到)并处理
QoS 1 消息
发送者
控制报文流向
接受者
存储消息</