MQTT 5.0 新特性

MQTT 5.0 新特性

MQTT 5.0 = 在保留核心 Pub/Sub 的前提下,大幅增强可诊断性、可扩展性、大规模与互操作
正式标准:https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html
批准日期:2019-03-07

规范自述的功能目标包括:增强错误报告、共享订阅、消息过期、主题别名、用户属性、增强认证、流控等。


1. 为什么需要 5.0

3.1.1 的痛点:

  • 失败时常只看到很粗的返回码
  • 大消息/慢消费者缺少标准化流控
  • 请求/响应模式要自己约定
  • 元数据只能塞进 Payload

5.0 用 Reason Code + Properties 系统化解决。


2. Reason Code

几乎所有确认/断开报文可携带 Reason Code:

  • 成功 / 各类失败原因更细
  • DISCONNECT 可说明“为什么踢你”
  • SUBACK 可按订阅项返回结果

排障价值极高:少猜、多读码。


3. Properties(属性)

控制报文可带属性列表,重要者包括:

属性 用途
Session Expiry Interval 会话保留多久
Message Expiry Interval 消息过期
Content Type 载荷类型提示
Response Topic / Correlation Data 请求-响应
Subscription Identifier 订阅标识,回调分流
Topic Alias 用短别名降低重复主题开销
User Property 任意键值元数据(UTF-8)
Receive Maximum 未确认 QoS1/2 上限
Maximum Packet Size 包大小上限
Server Keep Alive 服务端可覆盖 Keep Alive
Authentication Method/Data 增强认证

4. 共享订阅

$share/{ShareName}/{TopicFilter}
组内负载均衡,见 01-主题与发布订阅模型.md


5. 请求 / 响应模式

标准化字段:

  • Response Topic:响应发到哪里
  • Correlation Data:把响应对回请求

不必再靠私有约定“reply_to”塞进 JSON(当然仍可并存)。


6. 主题别名(Topic Alias)

对高频、长 Topic:

  1. 首次 PUBLISH 带完整 Topic + Alias
  2. 后续只用 Alias

显著降低带宽(对受限网络友好)。


7. 增强认证(AUTH)

除用户名密码外,支持多步认证交换(SASL 风格思路):

  • CONNECT 声明 Authentication Method
  • 后续 AUTH 报文往返

适合企业身份源、令牌刷新、更强质询应答。


8. 负反馈与“服务端能力”

CONNACK 可告知:

  • 服务器支持的最大 QoS、最大包长、是否保留可用、共享订阅是否可用等

Client 应按 CONNACK 调整行为,而不是假设所有 Broker 能力相同。


9. 迁移建议

策略 说明
双栈 Broker Mosquitto/EMQX/HiveMQ CE 等多同时支持 3.1.1 与 5.0
新服务优先 5.0 直接受益于 Reason Code / 属性
旧设备保留 3.1.1 通过 Broker 互通(注意特性降级)
桥接注意 5.0 属性跨桥可能丢失,需测

下一篇:05-安全与认证.md

文章互动

阅读 --

留言

0 条留言

正在加载留言…