news 2026/6/10 13:16:30

MQTT使用通配符订阅消息

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MQTT使用通配符订阅消息

在MQTT协议中,通配符订阅是一种强大的功能,允许客户端订阅一个或多个主题,而不仅仅是单一的主题。这极大地提高了灵活性和效率,尤其是在需要处理大量相关主题的情况下。MQTT支持两种类型的通配符:

  1. 单级通配符‌ (+):用于匹配一个单一的层级的主题。
  2. 多级通配符‌ (#):用于匹配多个层级的主题。

使用单级通配符 (+)

单级通配符+可以用来替代主题中的一个层级。例如,如果你想要订阅所有以sensors/开头,后面跟着任意一个层级,然后是/data结尾的主题,你可以使用以下订阅:

sensors/+/data

这将匹配sensors/temperature/datasensors/humidity/data等所有类似的主题。

使用多级通配符 (#)

多级通配符#可以替代主题中的任意层级的数量。例如,如果你想要订阅所有以sensors/开头的主题,无论后面有多少层级,你可以使用以下订阅:

sensors/#

这将匹配sensors/temperature/datasensors/humidity/location/data等所有类似的主题。

注意事项

  • 性能影响‌:虽然使用通配符订阅非常方便,但也可能对性能产生影响,特别是当匹配的主题数量非常多时。因此,在设计MQTT主题结构时,应该尽量避免使用多级通配符来订阅过多的主题。
  • 主题层级‌:在设计MQTT主题时,考虑到层级结构可以帮助更好地使用通配符进行订阅。例如,将设备的类型、ID和具体的数据类型分开,可以更精确地使用通配符。
  • 客户端实现‌:不同的MQTT客户端库可能对通配符的支持略有不同,因此在实现时最好查阅你所使用的客户端库的文档。

示例代码(使用MQTT.js)

const mqtt = require('mqtt'); const client = mqtt.connect('mqtt://broker.example'); client.on('connect', () => { client.subscribe('sensors/+/data', (err) => { if (!err) { console.log('Subscribed to sensors/+/data'); } }); }); client.on('message', (topic, message) => { console.log(topic, message.toString()); });

这个例子展示了如何使用单级通配符来订阅特定的主题模式。通过这种方式,你可以灵活地处理来自不同传感器或设备的数据。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 5:46:28

企业级解决方案:处理无签名第三方INF文件的最佳实践

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个企业级INF文件管理系统,功能包括:1.自动扫描网络共享中的INF文件 2.分类存储有签名/无签名文件 3.对无签名文件进行风险评估 4.生成管理报表 5.支持…

作者头像 李华
网站建设 2026/6/10 11:41:50

算法题 K 站中转内最便宜的航班

K 站中转内最便宜的航班 问题描述 有 n 个城市,编号从 0 到 n - 1。给你一个航班数组 flights,其中 flights[i] [from_i, to_i, price_i] 表示从城市 from_i 到城市 to_i 的航班价格为 price_i。 给你三个整数 src(出发城市)、…

作者头像 李华
网站建设 2026/6/10 11:36:25

SMDJ51A单向 TVS瞬态抑制二极管:3000W功率中压浪涌防护核心

SMDJ51A单向 TVS瞬态抑制二极管 二极管产品已经跟我们的生活有着密不可分的联系了, TVS瞬态抑制二极管,是一种高效能保护二极管,产品体积小、功率大、响应快等诸多优点,产品应用广泛 TVS瞬态抑制二极管SMDJ51A,是一种二…

作者头像 李华
网站建设 2026/6/10 11:44:58

小白也能懂:Ubuntu安装Nvidia显卡驱动图解教程

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 制作一个面向新手的交互式Nvidia驱动安装教程。要求:1. 图形化界面展示每个步骤 2. 包含常见错误截图及解决方法 3. 终端命令可直接复制粘贴 4. 安装后基础检测方法。输…

作者头像 李华
网站建设 2026/6/10 11:40:56

小程序毕设选题推荐:基于springboot+微信小程序的校园活动管理系统设计与实现基于微信小程序的大学生社团活动管理系统【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/6/10 11:39:07

传统vs现代:DDoS防护效率对比分析

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个DDoS防护效率对比工具,能够模拟传统规则匹配和现代AI算法两种防护方式,实时展示两者的检测准确率、响应时间和系统资源占用情况。工具应提供可视化对…

作者头像 李华