Qos 0/1/2的理解

Qos 0/1/2的理解

Qos 0

最多一次的传输 消息是基于TCP/IP网络传输的。没有回应,在协议中也没有定义重传的语义。消息可能到达服务器1次,也可能根本不会到达。缓存

 

 

Qos 1

至少一次的传输 服务器接收到消息会被确认,经过传输一个PUBACK信息。若是有一个能够辨认的传输失败,不管是通信链接仍是发送设备,仍是过了一段时间确认信息没有收到,发送方都会将消息头的DUP位置1,而后再次发送消息。消息最少一次到达服务器。SUBSCRIBE和UNSUBSCRIBE都使用level 1 的QoS。 若是客户端没有接收到PUBACK信息(不管是应用定义的超时,仍是检测到失败而后通信session重启),客户端都会再次发送PUBLISH信息,而且将DUP位置1。 当它从客户端接收到重复的数据,服务器从新发送消息给订阅者,而且发送另外一个PUBACK消息。服务器

笔者作了一个实现消费端阻塞2秒消费一个内容,发布端1秒发布一个内容,等EMQ的最大拥塞使用完了以后消息在EMQ缓存的会后就会出现不少的重复消息网络

 

Qos 2

只有一次的传输 在QoS level 1上附加的协议流保证了重复的消息不会传送到接收的应用。这是最高级别的传输,当重复的消息不被容许的状况下使用。这样增长了网络流量,可是它一般是能够接受的,由于消息内容很重要。 QoS level 2在消息头有Message ID。session

 

 

出处:https://my.oschina.net/wenzhenxi/blog/1795750.net

相关文章
相关标签/搜索