首页 > 其他分享 >MQTT Qos

MQTT Qos

时间:2022-11-11 20:44:20浏览次数:66  
标签:收到 QoS 接收端 发送 MQTT 消息 Qos

MQTT Qos等级

  • MQTT设计了一套保证消息稳定传输的机制,包括消息应答、存储和重传。在这套机制下,提供了三种不同层次QoS(Quality of Service):

  • Qos 0:最多发送一次

    • 发送端发送报文 如果发送失败就算了
  • Qos 1:至少发送一次 【通过Ack机制】

    • 发送端发送报文 如发送失败就继续发送,接收端至少收到一次

      也就是发送失败会继续发送,因为消息重传,接收端有可能收到相同的信息

  • Qos 2:确保只有一次

    • 发送端发送数据,确保接收端可以收到,确保只能收到一次

      发送端向接收端发送数据,发送失败就继续重试,直到接收端收到消息为止,同时保证接收端不会因为消息重传而重复接收到相同的信息

PS:QoS 级别越高,流程越复杂,系统资源消耗越大。应用程序可以根据自己的网络场景和业务需求,选择合适的 QoS 级别

流程图设计:

Qos 0:

image-20221111175037748

Qos 1:

image-20221111185458363

Qos 2:

  • 流程太复杂

当 QoS 为 2 时,发布者和订阅者通过两次会话来保证消息只被传递一次,这是最高等级的服务质量,消息丢失和重复都是不可接受的。使用这个服务质量等级会有额外的开销。

发布者发布 QoS 为 2 的消息之后,会将发布的消息储存起来并等待接收者回复 PUBREC 的消息,发送者收到 PUBREC 消息后,它就可以安全丢弃掉之前的发布消息,因为它已经知道接收者成功收到了消息。发布者会保存 PUBREC 消息并应答一个 PUBREL,等待接收者回复 PUBCOMP 消息,当发送者收到 PUBCOMP 消息之后会清空之前所保存的状态。

当接收者接收到一条 QoS 为 2 的 PUBLISH 消息时,他会处理此消息并返回一条 PUBREC 进行应答。当接收者收到 PUBREL 消息之后,它会丢弃掉所有已保存的状态,并回复 PUBCOMP。

无论在传输过程中何时出现丢包,发送端都负责重发上一条消息。不管发送端是 Publisher 还是 Broker,都是如此。因此,接收端也需要对每一条命令消息都进行应答。

MQTT_3.png

参考:MQTT QoS(服务质量)介绍 | EMQ (emqx.com)

标签:收到,QoS,接收端,发送,MQTT,消息,Qos
From: https://www.cnblogs.com/Xin-chen/p/16881807.html

相关文章

  • Windows下安装搭建MQTT服务器
    服务器常用的有emqx,还有apacheapolle,这里用的是emqx服务端以及客户端可以使用MQTTnet(NuGet包)一、MQTT服务器(emqx)搭建1.下载服务器MQTTBroker从https://www.emqx.i......
  • AIRIOT物联网低代码平台如何配置MQTT驱动?
    MQTT驱动配置简介MQTT全称为消息队列遥测传输(英语:MessageQueuingTelemetryTransport),是ISO标准(ISO/IECPRF20922)下基于发布(Publish)/订阅(Subscribe)范式的消息协......
  • html中使用mqtt
    MQTT.js 是一个开源项目,支持nodejs和Browserjs,这里对比一下nodejs和Browserjs的用法:注:nodejs是运行在webserver的js,Browserjs意思是运行在浏览器上的js,也就是H......
  • v1.9.0 进行中:开箱即用的 MQTT bench 工具
    十月初,MQTTX团队发布了1.8.3版本。对桌面端应用实现了MQTT5.0版本适配,MQTTXCLI支持了多主题订阅,同时修复了多个已知问题。此外,团队正专注于1.9.0版本的开发,最主......
  • Esp32 Mqtt
    使用esp32连接MQTT服务器使用Arduino库PubSubClient.h修改PubSubClient.h文件基本初始化引入头文件#include"PubSubClient.h"constchar*ssid="XXXX";......
  • HarmonyOS系统中内核实现MQTT连接华为云的方法
       大家好,今天主要和大家聊一聊,如何使用MQTT连接华为云平台的方法目录​​第一:MQTT通信基本原理​​​​第二:华为IOT平台API​​​​第三:华为IOT平台初始化​​​​第......
  • 工业网关BL110实现西门子S7-400 PLC 接入金鸽MQTT云平台
    LAN接口的配置COM口采集西门子S7-400PLC的配置工业智能网关BL110一共有一个LAN接口,一个WAN接口,可以通过LAN接口采集数据,通过WAN接口接入局域网,设置过程不一样,WAN接口可......
  • 工业网关BL110实现西门子S7-1200 PLC接入MQTT Client One云平台
    LAN接口的配置COM口采集西门子S7-1200PLC的配置工业智能网关BL110一共有一个LAN接口,一个WAN接口,可以通过LAN接口采集数据,通过WAN接口接入局域网,设置过程不一样,WAN接口......
  • 工业网关如何采集西门子PLC S7-200 SMART的IO数据并上传到MQTT云平台?
    西门子S7-200是一款运行稳定、编程简单、功能多样的PLC,在多个工业控制领域都有所应用,是西门子打入中国市场的敲门砖,在国内有很高的占有率。作为S7-200的升级产品S7-200SMAR......
  • MQTT Host name verification failure (SSL)-增加--insecure选项解决
    增加一个选项即可解决:--insecure出问题:mosquitto_pub-d-h192.168.1.10-p1883-thello-m123--cafile~/cacert.pemClientnullsendingCONNECTError:hostn......