MQTT消息质量等级——QoS
前言
使用MQTT协议的设备大部分都是运行在网络受限
的环境下,而只依靠底层的TCP传输协议,并不能完全保证消息的可靠到达。
MQTT提供了 QoS机制,其核心是设计了多种消息交互机制来提供不同的服务质量
,来满足用户在各种场景下对消息可靠性的要求。
QoS简介
MQTT 定义了三个 QoS 等级,分别为:
- QoS 0:最多交付一次 ----> 可能丢失消息
- QoS 1:至少交付一次 -----> 可以保证收到消息,但消息可能重复
- QoS 2:只交付一次 ----> 可以保证消息既不丢失也不重复
QoS等级是由 发布者 在PUBLISH报文中指定的,大部分情况下Broker向订阅者转发消息时都会维持原始的 QoS 不变。不过也有一些例外的情况,根据订阅者的订阅要求,消息的 QoS 等级可能会在转发的时候发生降级。
例如,订阅者在订阅时要求Broker可以向其转发的消息的最大QoS等级为QoS 1,那么后续所有QoS 2消息都会降级至QoS 1转发给此订阅者,而所有QoS 0和QoS 1消息则会保持原始的QoS等级转发。