2024-03-22 MQTT 主题与通配符

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 话题名称和话题过滤器(MQTT“5.0”协议版本和MQTT“3.1.1”协议版本) 4.7.1 主题通配符 Top...
    陈家mini阅读 2,444评论 0 0
  • 通配符 "+" 单层通配符,可以匹配特定主题层的任何名称 "#" 多层通配符,可以匹配任何特定主题级别的名称。 例...
    python测试开发阅读 409评论 0 1
  • 随着 5G 时代的来临,万物物联的伟大构想正在成为现实。联网的物联网设备在 2018 年已经达到了 70 亿[1]...
    觉释阅读 348评论 0 2
  • 前言: mqtt 的主题一个层级的概念. 我们订阅多个主题就需要用到这个技术点功能是在主题中引入层次。层次又分主题...
    水车阅读 5,804评论 0 1
  • MQTT协议 一、介绍 MQTT使用的底层传输协议基础设施。 客户端使用它连接服务端。 它提供有序的、可靠的、双向...
    涵仔睡觉阅读 721评论 0 0