MQTT原理快速入门
分类: MQTT
1. 核心工作原理
MQTT 的核心在于它不要求客户端(Client)直接建立连接,而是通过一个代理服务器(Broker)作为中转站。
角色分配
- 发布者 (Publisher):发送消息的客户端。
- 订阅者 (Subscriber):接收消息的客户端。
- 代理 (Broker):核心枢纽,负责接收发布者的消息,并将其过滤后分发给所有匹配的订阅者。
主题 (Topic)
消息不是直接发给某个人,而是发给一个“频道”,这就是 Topic。
- 结构:使用斜杠分隔层级,例如:
home/livingroom/temperature。
- 通配符:
+:匹配单层(如 home/+/temperature 匹配客厅或厨房)。
#:匹配多层(如 home/# 匹配 home 下的所有信息)。
2. 服务质量等级 (QoS)
MQTT 允许你根据网络环境和重要程度选择消息传输的可靠性:
| 等级 |
名称 |
特点 |
场景 |
| QoS 0 |
最多交付一次 |
发后即焚,不保证到达 |
传感器周期性上报(丢一次无所谓) |
| QoS 1 |
至少交付一次 |
保证到达,但可能会重复 |
重要指令下发 |
| QoS 2 |
只交付一次 |
确保到达且不重复 |
计费系统、金融交易 |
3. 关键特性
- 遗嘱消息 (Last Will):如果客户端异常断开,Broker 会自动向指定 Topic 发送一条“遗嘱”,通知其他设备。
- 保留消息 (Retained Message):Broker 会保留该 Topic 的最后一条消息。新订阅者加入时,即使没人发布,也能立刻收到最近的状态。
- 轻量级:头部开销极小(最小仅 2 字节),非常节省电量和流量。
4. 快速动手实践
想要快速体验?不需要写代码,使用现成的工具即可:
- 下载工具:安装 MQTTX(跨平台,界面友好)。
- 连接公共服务器:
- Host:
broker.emqx.io
- Port: 1883
- 操作步骤:
- 打开两个窗口,模拟两个客户端。
- 客户端 A 订阅 Topic:
test/topic/123。
- 客户端 B 向 Topic test/topic/123 发送 "Hello World"。
- 你会看到客户端 A 立即收到了消息。
5. 常见应用场景
- 智能家居:灯光控制、温湿度上报。
- 工业 4.0:设备监控、远程诊断。
- 移动推送:早期的 Facebook Messenger 曾使用 MQTT 来实现高效的消息推送。