一、MQTT 简介

MQTT(Message‑Queuing Telemetry Transport),轻量二进制发布‑订阅 (Pub/Sub) 消息协议,专为物联网、弱网设备设计,运行在 TCP 之上,也支持 WebSocket 封装用于浏览器。

现在标准由 OASIS 维护;主流版本:

  • MQTT 3.1.1
  • MQTT 5.0

1.1 Body:MQTT 的 Topic 协议规定的语法规则

语法 含义
/ 层级分隔
+ 单级通配
# 多级通配,必须放在末尾
$ 开头 系统 topic,# 不匹配
通配符 只能用于订阅,不能发布

二、MQTT 比起其它消息服务协议的关键协议特性

2.1 保留消息 Retained

  • publish 消息标记 retain=1,Broker 保存该 topic 最新一条
  • 新订阅者订阅瞬间立刻拿到这条消息
  • 适合设备状态、仪表盘快照

经常搭配 LWT 遗嘱消息,实现设备上下线快照。

2.2 遗嘱消息 LWT

  • CONNECT 建连接的时候预先注册
  • 异常掉线时 Broker 自动发送
  • 正常 DISCONNECT 退出不会发送

经常搭配 Retain 保留消息,实现设备上下线快照。

2.3 三大 QoS —— 消息可靠性,协议原生定义

QoS 名称 行为 适用场景
QoS 0 最多一次 发完就丢,不确认;消息可能丢失 传感器高频上报,丢一条无所谓
QoS 1 至少一次 保证收到,可能重复收到 设备状态上报,允许重复
QoS 2 恰好一次 握手流程,保证只收到一次,开销最大 计费、控制指令,不允许重复


三、一句话总结

MQTT = 弱网 + 海量设备 + 双向实时 + 状态快照需求 的默认答案;Retained / LWT / QoS 是它不用写代码就能拿到的"设备在线状态机"基础设施。

更多推荐