MQTT 主题通配符包含单层通配符 + 及多层通配符 #,主要用于客户端一次订阅多个主题。
单层通配符
加号 (“+” U+002B) 是用于单个主题层级匹配的通配符。在使用单层通配符时,单层通配符必须占据整个层级,例如:
+ 有效
sensor/+ 有效
sensor/+/temperature 有效
sensor+ 无效(没有占据整个层级)
多层通配符
井字符号(“#” U+0023)是用于匹配主题中任意层级的通配符。多层通配符表示它的父级和任意数量的子层级,在使用多层通配符时,它必须占据整个层级并且必须是主题的最后一个字符,例如:
# 有效,匹配所有主题
sensor/# 有效
sensor/bedroom# 无效(没有占据整个层级)
sensor/#/temperature 无效(不是主题最后一个字符)
常见的 MQTT 主题使用建议有哪些?
不建议使用 # 订阅所有主题;
不建议主题以 / 开头或结尾,例如 /chat 或 chat/;
不建议在主题里添加空格及非 ASCII 特殊字符;
同一主题层级内建议使用下划线 _ 或横杆 - 连接单词(或者使用驼峰命名);
尽量使用较少的主题层级;
当使用通配符时,将唯一值的主题层(例如设备号)越靠近第一层越好。例如,device/00000001/command/# 比device/command/00000001/# 更好。
https://www.emqx.com/zh/blog/advanced-features-of-mqtt-topics