首页/网络/工控与物联网速查/MQTT通配符订阅的使用与陷阱
物联网协议60 条

MQTT通配符订阅的使用与陷阱

MQTT 通配符订阅用单层通配符匹配一级,用多层通配符匹配剩余所有层级,后者只能出现在过滤器末尾并独占一层。它能简化平台侧订阅,但会放大消息量与授权范围。

工控与物联网速查网络更新于 2026-10-17
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌‌​‌‌​‌‌​‌​‌‌‌​​​‌​‌‌‌​‌​​​‌‌‌​‌​​​​‌​‌‌​‌​‌‌‌​‌‌‌​‌‌​‌​​‌​‌‌​‌‌​​​‌‌​​‌​​​‌‌​​​‌‌​‌‌​​​​‌​‌‌‌​​‌​​‌‌​​‌​​​​‌​‌‌​‌​‌‌‌​​‌‌​‌‌‌​‌​‌​‌‌​​​‌​​‌‌‌​​‌‌​‌‌​​​‌‌​‌‌‌​​‌​​‌‌​‌​​‌​‌‌‌​​​​​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

两个通配符

单层通配符匹配一层中的任意内容,多层通配符匹配零层或多层,因此它只能出现在主题过滤器的最后并独占一层。以美元符号开头的主题通常是代理自身发布的系统主题,不会被多层通配符或顶层的单层通配符匹配,需要显式订阅。

匹配示例

订阅过滤器能匹配不能匹配
a/+/ca/b/c、a/x/ca/b/x/c、a/c
a/#a、a/b、a/b/cb/a、x/a/b
#所有不以美元符号开头的主题代理自身的系统主题
$SYS/#代理系统主题普通业务主题

常见写法

常见写法
# 订阅某站点全部数据:acme/shanghai/+/#
# 订阅全部租户的设备状态:+/+/+/status
# 订阅代理自身运行指标:$SYS/broker/#
# 非法写法:a/#/c(多层通配符不在末尾)
# 非法写法:a/b#(多层通配符未独占一层)

典型使用场景

  • 平台侧汇聚:按站点或设备类型用通配符订阅,新增设备无需改配置
  • 运维监控:订阅代理系统主题观察连接数、消息吞吐与丢弃计数
  • 临时排查:用单层通配符临时替换某个设备编号,快速比对同类设备数据
  • 规则引擎:以通配符订阅作为规则输入,把消息路由到不同处理管道
过滤器匹配发生在服务端,客户端不会收到被过滤掉的报文,因此通配符订阅本身不增加下行流量,但会显著增加服务端匹配与转发的负担。
服务端通常直接以主题过滤器作为授权依据,过宽的通配符等于把授权范围一并放大,需要与最小权限原则一起权衡。

易错点

  • 把多层通配符放在过滤器中间:属于非法主题过滤器,部分客户端会直接断开连接
  • 以为多层通配符能匹配系统主题:实际需要显式订阅,否则运维监控看不到数据
  • 平台侧一律用最宽的过滤器订阅:设备规模增长后单节点消息量与内存同步暴涨
  • 用通配符订阅配合共享订阅做负载分担:不同实现的分组与保留消息行为差异较大,上线前必须验证
  • 在客户端逐个设备写死订阅而不使用通配符:设备规模上千后订阅报文数量与内存开销反而更高

数据来源与参考

  • OASIS MQTT Version 5.0 规范(主题过滤器章节)
  • MQTT 官方站点通配符订阅说明

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/ics/mqtt-wildcard-subscription.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌‌​‌‌​‌‌​‌​‌‌‌​​​‌​‌‌‌​‌​​​‌‌‌​‌​​​​‌​‌‌​‌​‌‌‌​‌‌‌​‌‌​‌​​‌​‌‌​‌‌​​​‌‌​​‌​​​‌‌​​​‌‌​‌‌​​​​‌​‌‌‌​​‌​​‌‌​​‌​​​​‌​‌‌​‌​‌‌‌​​‌‌​‌‌‌​‌​‌​‌‌​​​‌​​‌‌‌​​‌‌​‌‌​​​‌‌​‌‌‌​​‌​​‌‌​‌​​‌​‌‌‌​​​​​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​