MQTT 常见应用场景
1. 物联网(IoT)设备监控
📱 传感器设备
- 温度传感器
- 湿度传感器
- 压力传感器
- GPS 定位器
→
🔄 MQTT Broker
消息路由与分发
→
🖥️ 后端服务
- 数据存储
- 数据分析
- 告警系统
# 典型主题设计
devices/{device_id}/telemetry # 遥测数据
devices/{device_id}/status # 设备状态
devices/{device_id}/commands # 控制命令
devices/{device_id}/commands/resp # 命令响应
2. 实时消息推送
MQTT 的长连接特性使其非常适合实时消息推送场景,如聊天应用、通知系统等。
💬 即时聊天
用户上线即订阅个人主题,消息实时送达
users/{user_id}/messages
users/{user_id}/presence
🔔 系统通知
推送系统公告、订单状态变更等通知
notifications/{user_id}
orders/{order_id}/status
📊 实时数据
股票行情、体育比分等实时数据推送
stocks/{symbol}/price
scores/{match_id}/live
3. 智能家居系统
🏠 智能家居中枢
MQTT Broker
💡 智能灯泡
home/lights/living-room
🌡️ 温控器
home/thermostat
🔒 智能门锁
home/locks/front-door
📷 摄像头
home/cameras/{id}/status
🔔 传感器
home/sensors/{type}
📱 手机 App
home/app/commands
🏠 智能家居主题设计示例
| 设备 | 控制主题 | 状态主题 |
|---|---|---|
| 灯泡 | home/lights/+/set |
home/lights/+/state |
| 窗帘 | home/blinds/+/set |
home/blinds/+/position |
| 空调 | home/ac/+/command |
home/ac/+/status |
4. 日志收集与监控
使用 MQTT 收集分布式系统的日志和指标数据,通过 Retained Message 保留最新状态。
# 服务状态(使用 Retain 标志)
services/{service_id}/health # {"status": "healthy", "uptime": 3600}
services/{service_id}/metrics # {"cpu": 45%, "mem": 2.1GB}
# 日志收集
logs/{service_id}/{level} # level: debug, info, warn, error
logs/{service_id}/errors # 仅错误日志
# 告警
alerts/{severity}/{service_id} # severity: critical, warning, info
应用服务
发布日志/指标
→
MQTT Broker
消息路由
→
数据处理
存储/分析/告警
5. 车联网(V2X)
🚗 车辆遥测
实时上报车辆位置、速度、电量等数据
vehicles/{vin}/location
vehicles/{vin}/telemetry
vehicles/{vin}/battery
🔧 远程诊断
故障码上报、远程诊断命令
vehicles/{vin}/diagnostics
vehicles/{vin}/dtc # 故障码
📡 OTA 升级
固件升级通知、进度上报
vehicles/{vin}/ota/status
vehicles/{vin}/ota/progress
6. 工业物联网(IIoT)
在工业环境中,MQTT 用于连接 PLC、传感器、SCADA 系统等设备。
🏭 工业场景特点
- 高可靠性: 使用 QoS 1 或 QoS 2 确保消息送达
- 低延迟: 本地部署 Broker,减少网络延迟
- 安全性: TLS 加密 + 客户端证书认证
- 大规模: 支持数万设备并发连接
# 工业主题命名规范(参考 Sparkplug B)
spBv1.0/{Group ID}/DDATA/{Device ID} # 设备数据
spBv1.0/{Group ID}/NCMD/{Device ID} # 节点命令
spBv1.0/{Group ID}/DCMD/{Device ID} # 设备命令
spBv1.0/{Group ID}/STATE # 边缘节点状态
7. 移动应用消息同步
移动 App 使用 MQTT 保持长连接,实现消息同步、状态更新等功能。
📲 消息同步
多设备消息同步,已读状态同步
👥 在线状态
使用 Last Will 实现下线检测
🔄 数据同步
使用 Retained Message 保存最新状态