解析Mqtt 消息服务质量Qos

(1)、概述
Mqtt中 qos定义了消息服务质量(Quantity Of Service), 它保证了在不同网络环境下消息传递的可靠性;
它是MQTT中重要的一个组成部分
(2)、Mqtt Qos等级
Qos 0: 消息最多传递一次,如果当时客户端不可用时,则会丢失该消息

Qos 1: 消息最少传递一次

Qos 2: 消息正好传递一次
(3)、Qos工作原理
当Qos为0时,消息最多到达一次,也有可能会丢失,消息到达的能力完全依赖底层的网络能力;发布者只会发布一次消息,不会保存和重发

在这里插入图片描述

当Qos为1时,保证消息至少到达一次;Publisher发布消息到Broker 等待返回 ACK ; Broker投递消息到订阅者Subscriber等待返回ACK;如果在规定时间内没有收到ACK,则标记DUP并重发消息
在这里插入图片描述

当Qos设置为2时,消息严格执行传递一次;当发布者发送qos为2的消息时,会存储消息下来并等待订阅者Subscriber回复PUBREC,收到之后发布者Publisher即会安全的删除消息;同时保存PUBREC消息并应答一个PUBREL,同时等待订阅者返回PUBCOMP, 订阅者收到PUBREL之后,它就会丢掉消息和状态消息,并回复PUBCOMP;
在这里插入图片描述

(4)、Qos在Publish和Subscribe的联系和区别
需要注意的是,Mqtt发送的消息有两个阶段,第一阶段是发布者Publisher传递消息到Broker, 
第二阶段是Broker传递消息到订阅者Subscriber

如下图所示,发布和订阅时不同的qos决定了最终接受消息的Qos

发布消息的 QoS主题订阅的 QoS接收消息的 QoS
000
010
020
100
111
121
200
211
222
(5)、如何选择合适的Qos

Qos越大,对应的网络开销也就越大

在允许偶尔丢消息的情况下,设置qos=0

在需要消息不丢,可以接受消息重复的情况下,设置qos=1

在一些需要严格保证刚好到达一次的情况下,一般在银行、金融、消防、航空等行业,设置Qos=2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值