MQTT QoS 0,1,2 的介绍

MQTT协议通过QoS 0, 1, 2提供不同级别的服务质量,确保在不稳定网络环境下的消息传递。QoS 0可能丢消息,QoS 1可能导致重复消息,QoS 2保证消息既不丢失也不重复,但复杂度和成本增加。选择QoS级别需权衡可靠性和效率。" 120519630,5731334,backtrader参数优化:动态修改与递进优化策略,"['python', 'backtrader', '参数优化', '回测策略', '投资科学']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址:https://dev.to/emqx/introduction-to-mqtt-qos-0-1-2-oba

什么是QoS?

在不稳定的网络环境中,建立MQTT协议连接的设备仅靠TCP传输协议来保证通信的可靠性是很困难的事情。为了解决这个问题,MQTT协议引入了服务质量(Quality of Service,QoS)的机制来提供多种消息交互方式以提供不同级别的服务,满足用户在不同场景下对消息送达可靠性的特殊要求。

在MQTT中有3种QoS级别:

  • QoS 0,最多一次
  • QoS 1,至少一次
  • QoS 2,仅且只有一次

以上QoS数值和消息发送的可靠性相匹配,值越大通信可靠性越强。QoS 0可能会丢失消息,QoS 1能保证消息送达但有机率重复收到消息,QoS 2能保证消息正确送达且不会重复。随着QoS级别的提高,消息送达的可靠性也在增强,但与此同时传输过程也变的越来越复杂。

在发布者向订阅者发送消息的过程中,发布者可以在PUBLISH包中指定消息的QoS级别。一般情况下Broker向订阅者转发消息的时候会使用发布者指定的QoS级别,不过某些情况下订阅者也会把收到的消息降级。

例如,如果订阅者指定了只接收QoS等级为1或0的消息那么Broker会把所有QoS2的消息降级为QoS1然后再转发给订阅者。QoS 1或QoS 0的消息会使用原有指定的等级转发给订阅者,不做改变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值