MQTT协议定义了三个服务质量(QoS)等级,用于满足不同场景下对消息可靠性的需求。以下是各等级的详细介绍:
QoS 0:最多交付一次
特点:消息发布后不确认、不重传,可能丢失或重复。
适用场景:非关键数据(如环境传感器数据),允许少量丢失。
性能:低延迟、无额外开销,但可靠性完全依赖底层TCP协议。
QoS 1:至少交付一次
特点:通过确认机制(PUBACK)保证消息至少到达一次,但可能因重传导致重复。
适用场景:需可靠性但可容忍重复的场景(如设备控制指令)。
机制:发布者存储消息直至收到确认,未收到确认则重传。
QoS 2:只交付一次
特点:通过复杂握手协议(PUBREC/PUBREL/PUBCOMP)确保消息不丢失、不重复。
适用场景:关键业务(如金融交易、远程医疗)。
可靠性:最高等级,但传输复杂度和开销较大。
QoS等级的动态调整
降级规则:若订阅者要求的最大QoS低于发布者,Broker会降级转发消息(如QoS 2降为QoS 1)。
灵活性:允许根据网络条件和应用需求选择合适等级。
总结:QoS等级从低到高(0→2),可靠性提升但复杂度增加,需根据实际场景权衡选择。

