当前位置: 首页 > ds >正文

解析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

http://www.xdnf.cn/news/1887.html

相关文章:

  • 2025最新软件测试面试八股文(答案+文档+视频讲解)
  • linux 桌面环境
  • 如何用大模型技术重塑物流供应链
  • 【C++基础知识】C++类型特征组合:`disjunction_v` 和 `conjunction_v` 深度解析
  • linux centOS7.9 No package docker-ce available
  • 解决 Windows10 下 UWP 应用无法使用本地代理
  • Python实现技能记录系统
  • 建筑安全员考试科目有哪些
  • 从梯度消失到百层网络:ResNet 是如何改变深度学习成为经典的?
  • 三维扫描|用高精度3D数据驱动制造企业降本增效
  • 循环神经网络RNN(示例代码LSTM预测股价示例)
  • 【硬核干货】SonarQube安全功能
  • 上篇:深入剖析 BLE 底层物理层与链路层(约5000字)
  • FreeRTOS【2】任务、优先级知识重点
  • 【C语言】C语言结构体:从基础到高级特性
  • 深入解析 doas:有望替代 sudo 的极简权限管理工具
  • Dify快速入门之发布应用
  • Trae 编程工具 Cline 插件安装与 Claude 3.7 API Key 自定义配置详解
  • 修改RK3568 UBUNTU开机画面
  • C++ Lambda 表达式
  • 黑马点评商户查询缓存--缓存更新策略
  • shell练习(2)
  • github 简单访问方法(无魔法)
  • 数据库-数据类型、约束 和 DQL语言
  • QComboBox自适应下拉展开区域宽度但控件本身限制宽度
  • leetcode刷题日记——有效的括号
  • IOMUXC_SetPinMux的0,1参数解释
  • Java集合框架解析
  • 【TS入门笔记1---初识TS】
  • A*迷宫寻路