Mqtt之服务质量等级Qos

Qos0

  发送者只发送一次消息,不进行重试,Broker不会返回确认消息。在Qos0情况下,Broker可能没有接受到消息,流程如下图所示:
Mqtt之服务质量等级Qos_第1张图片

Qos1

  发送者最少发送一次消息,确保消息到达Broker,Broker需要返回确认消息PUBACK。在Qos1情况下,Broker可能接受到重复消息,流程如下图所示:
Mqtt之服务质量等级Qos_第2张图片

Qos2

  Qos2使用两阶段确认来保证消息的不丢失和不重复。在Qos2情况下,Broker肯定会收到消息,且只收到一次,流程如下图所示:

Qos1 VS Qos2

与Qos1相比,Qos2的开销会很大,因为Broker有额外的两个动作:

  1. 去重。为了保证消息不重复,Broker必须进行去重处理;
  2. 确保响应消息PUBREC到达客户端。Broker必须等待客户端对PUBREC消息的响应PUBREL,只有收到客户端的确认消息后,Broker才能对订阅者投递消息。

你可能感兴趣的:(Mqtt协议)