MQTT设计了一套消息传输机制,包括消息应答、存储和重传。在此套机制下,提供了三种不同层次QoS(Quality of Service):
QoS0,发送就不管了,最多一次;
QoS1,发送之后还要对方确认,所以至少一次;
QoS2,发送之后依赖MQTT消息机制,确保只有一次。
为了描述方便,把消息的发送端简称为发送方,把消息的接收端称为接收方。
Qos0表示最多发送一次,就是发送方发了一条消息后就不再发了,不管接收方有没有收到在这条消息。
Qos1表示至少发送一次,就是发送方发了一条消息后等待接收方回确认,如果没有收到还会再发。由于各种原因,接收方可能会收到多条同样的消息。
Qos2 表示接收方有且只有一次收到发送方的消息,那么问题来了,怎么保证?