MQTT系列—(6)MQTT 服务质量等级(QoS)详解 - 指南
目录

一、QoS 的概念
QoS(Quality of Service)用于定义 消息从发布者到订阅者传递的可靠性等级。 不同等级代表不同的消息传递保证。
MQTT 支持 三种 QoS 等级:0、1、2,每一级别都在可靠性与性能之间做取舍。
为什么服务质量很重要?
QoS 是 MQTT 协议的⼀项关键功能。QoS 使客⼾端能够选择与其⽹络可靠性和应⽤程序逻辑相匹 配的服务级别。由于 MQTT 管理消息的重传并保证消息的送达(即使底层传输不可靠),QoS 使 得在不可靠⽹络中的通信变得更容易。
二、QoS 等级对比总览
| 等级 | 名称 | 含义 | 是否可能丢消息 | 是否可能重复 | 网络开销 | 典型场景 |
| QoS 0 | 最多一次 (At most once) | 尽力而为传递,不确认是否到达 | ✅ 可能 | ❌ 不重复 | 最低 | 传感器上报频繁、非关键数据 |
| QoS 1 | 至少一次 (At least once) | 确保消息至少到达一次 | ❌ 不丢失 | ✅ 可能重复 | 中等 | 命令、告警消息 |
| QoS 2 | 仅一次 (Exactly once) | 确保消息到达且仅到达一次 | ❌ 不丢失 | ❌ 不重复 | 最高 | 金融交易、计费系统 |
三、QoS 传递过程详解
QoS 0 — 最多一次(At most once)
最低 QoS 级别为 0。此服务级别保证尽⼒送达。不保证送达。接收⽅⽆需确认收到消息,发送⽅也不会存储和重新传输该消息。QoS 级别 0 通常被称为“即发即弃”,其提供的保证与底层 TCP 协议相同。
特点:
无确认机制。
发布后立即发送,客户端或网络异常时可能丢失。
最快,但不可靠。
消息流程:
Publisher ---- PUBLISH(QoS=0) ---> Broker ---> Subscriber
应用场景:
设备上传频繁的温湿度、心跳、传感器数据;
对丢失个别数据包不敏感的监控系统。
示例:
Topic: smartlock/device001/telemetry
QoS: 0
说明: 设备每10秒上报一次电池电量,不要求100%可靠。
QoS 1 — 至少一次(At least once)
QoS 级别 1 保证消息⾄少投递给接收⽅⼀次。发送⽅会存储该消息,直到收到接收⽅发送的 PUBACK 数据包确认已收到该消息为⽌。⼀条消息可能会被发送或投递多次。
特点:
通过 PUBACK 确认机制保证消息至少到达一次。
若在确认前重发,会出现重复消息。
在可靠性与性能之间取得平衡。
消息流程:
Publisher -- PUBLISH(QoS=1) --> Broker
Publisher <-- PUBACK -------- Broker
Broker

浙公网安备 33010602011771号