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. 快速动手实践

想要快速体验?不需要写代码,使用现成的工具即可:

  1. 下载工具:安装 MQTTX(跨平台,界面友好)。
  2. 连接公共服务器: - Host: broker.emqx.io - Port: 1883
  3. 操作步骤: - 打开两个窗口,模拟两个客户端。 - 客户端 A 订阅 Topic:test/topic/123。 - 客户端 B 向 Topic test/topic/123 发送 "Hello World"。 - 你会看到客户端 A 立即收到了消息。

5. 常见应用场景

  • 智能家居:灯光控制、温湿度上报。
  • 工业 4.0:设备监控、远程诊断。
  • 移动推送:早期的 Facebook Messenger 曾使用 MQTT 来实现高效的消息推送。