MQTT QoS服务质量等级

QoS服务质量等级

1.QoS是什么

MQTT是一种轻量级的消息传输协议,它提供了三种QoS(Quality of Service,服务质量)级别,以确保消息的可靠传输。下面是MQTT中三个QoS级别:

·QoS = 0(At Most Once):最多一次传输。
·QoS = 1(At Least Once):至少一次传输。
·QoS = 2(Exactly Once):仅一次传输。

对于较为重要的MQTT消息,我们通常选用QoS为1或2的服务质量。

(1)QoS 0

当QoS设置为0时,消息被发送一次,但没有确认机制,消息可能会丢失或重复。这是最低的QoS级别,适用于对消息完整性要求不高的场景,如天气更新。

(2)QoS 1

当QoS设置为1时,消息被确保至少传递一次,但可能出现重复的消息。
在这里插入图片描述

发送端将消息发送给接收端后,会等待接收端的确认。接收端成功接收消息后,会发送一条确认报文PUBACK给发送端。如果发送端收到了这条PUBACK确认报文,那么它就知道消息已经成功接收。
如果没有收到PUBACK确认,则会重传消息。这个级别提供了基本的消息可靠性,适用于对消息的完整性较高的场景,如传感器数据。

(3)QoS 2

QoS设置为2时,消息被确保只传递一次,没有重复。发送方会等到收到PUBREC和PUBCOMP两个确认消息,以确保消息只传递一次。
下面我们来分步看一下Q0S=2时的消息发送和接收基本流程:
①下面我们来分步看一下Q0S=2时的消息发送和接收基本流程。
在这里插入图片描述
②接收端回复PUBREC确认报文
在这里插入图片描述
③ 发送端会应答PUBREL报文给接收端
在这里插入图片描述
④接收端应答PUBCOMP报文给发送端
在这里插入图片描述
当接收端收到PUBREL报文后,会应答发送端一条PUBCOMP报文。至此,一次QoS2的MQTT消息传输就结束了。

这是最高级别的QoS,适用于对消息的完整性和顺序性要求非常高的场景,如金融交易。

2.服务质量降级

对于发布和订阅消息的客户端,服务端会主动采用较低级别的QoS来实现消息传输。

3.注意事项

较高的QoS级别会带来更多的通信开销和延迟。因此,在选择QoS级别时,需要权衡网络带宽、延迟和消息可靠性的要求
通过使用适当的QoS级别,可以在消息传输中平衡消息的可靠性和通信效率,确保适合特定场景的消息传输要求。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弗朗克21

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值