MQTT的三种消息质量(QoS)等级是什么?

MQTT的三种消息质量(QoS)等级是什么?缩略图

MQTT是一个轻量级的消息协议,特别适用于低带宽、不可靠或高延迟的网络。MQTT定义了三种消息质量(Quality of Service, QoS)等级来确保消息的传输可靠性。这三种QoS等级分别为:

MQTT的三种消息质量(QoS)等级是什么?概述

MQTT的三种消息质量(QoS)等级是什么?插图
  1. QoS 0 - 最多传输一次 (At most once)
  • 描述:此等级下,消息被发送出去后,没有任何确认机制来验证消息是否已经被接收方收到。
  • 举例:假设您有一个传感器每秒都在测量温度,并将这些读数发送到服务器。如果偶尔丢失一两个读数对您的应用来说并不重要,那么使用QoS 0是合适的。
MQTT的三种消息质量(QoS)等级是什么?插图1
  1. QoS 1 - 至少传输一次 (At least once)
  • 描述:此等级要求接收方确认已经收到消息。如果发送方没有收到确认,它会重试发送消息。因此,有可能接收方会多次收到相同的消息。
  • 举例:假设您正在控制一个智能灯泡的开/关状态。当您发送一个"开"的命令时,您肯定希望灯泡接收到这个命令。如果使用QoS 1,灯泡收到命令后会发回确认。如果没有收到确认,您的控制器会再次尝试发送命令,直至收到确认。但灯泡可能会因为网络问题多次收到"开"命令,尽管这不会对灯泡的状态产生影响。
MQTT的三种消息质量(QoS)等级是什么?插图2
  1. QoS 2 - 只传输一次 (Exactly once)
  • 描述:此等级使用了一个复杂的四步握手过程,确保消息只被接收方收到一次,防止重复。
  • 举例:考虑一个金融交易系统,当某人尝试从其账户中转出一定金额时,您肯定不希望因为网络问题导致交易被处理多次。在这种情况下,使用QoS 2可以确保交易指令只传输并处理一次。

在选择QoS等级时,需要权衡消息的重要性、网络的可靠性以及应用的容错性。例如,对于关键的金融操作或需要确保数据完整性的应用,可能会选择QoS 2。但对于频繁的数据流或那些可以容忍偶尔数据丢失的应用,QoS 0或1可能更为合适。

技术术语(共 3 个)—— 点击展开
MQTT轻量级物联网消息传输协议,基于发布/订阅模式,适合低带宽不稳定网络
QoS服务质量等级,0 最多一次 / 1 至少一次 / 2 恰好一次
传感器将物理量转换为电信号的检测装置
来源/工具信息 —— 点击展开
来源 MQTT中文网(mqtt.cn) —— 国内领先的MQTT通信协议技术社区 分类 MQTT 教程 字数 717 字 · 阅读约 2 分钟 更新 2023-09-17 永久链接 https://www.mqtt.cn/631.html
推荐工具:MQTT调试助手 微信小程序
MQTT中文网官方推出的MQTT调试工具,支持 MQTT 3.1.1/5.0 实时连接调试、主题订阅、消息收发监控与报文分析。 无需安装,微信搜索「MQTT调试助手」即可使用。 电脑端入口:https://www.mqtt.cn/mqtttool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 mqtt.cn
相关标签
📝 作者声明
本文由 MQTT中文网技术团队 原创撰写,内容基于实际项目案例与技术文档,力求为读者提供准确、实用的参考信息。
把这篇资料用于真实项目?

进入工具中心进行报文解析、CRC 校验和设备调试,或提交需求获取选型与接入建议。

工程师会员

把这篇文章变成可执行的调试资料

开通后可使用高级报文解析、资料包下载、代码示例、工程案例和优先技术支持,适合真实项目交付。

高级工具不限次
资料包与代码包
完整工程案例库
优先技术支持入口