news 2026/4/2 15:36:03

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/3/25 1:50:00

ThingsBoard-规则链中发送通知节点没有选择项

在规则链中有send notification动作节点 当我们添加该节点时,无法选择模板 参见官网可见,这儿要求的是规则链生命周期事件类模板 Rule engine lifecycle event The rule engine lifecycle event template is used to send notification about rule chain…

作者头像 李华
网站建设 2026/3/27 5:59:23

三维测距定位传感器布置:用MATLAB玩一场数学游戏

【15】MATLAB仿真 三维测距定位传感器最优布置问题,A优化指标,即最小化信息矩阵逆的迹。 三种不同约束求解。 有参考文档。 主要参考文档: 1. Optimal Sensor Placement for 3-D Time-of-Arrival Target Localization, in IEEE Transactions…

作者头像 李华
网站建设 2026/4/2 7:59:34

小程序毕设选题推荐:基于springboot+微信小程序的选修课管理系统的设计与实现基于微信小程序的大学选修课考勤签到系统设计与开发【附源码、mysql、文档、调试+代码讲解+全bao等】

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

作者头像 李华
网站建设 2026/3/28 11:01:27

JMeter实战:电商大促秒杀系统压测全流程

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个电商秒杀场景的JMeter性能测试案例库,包含:1. 典型秒杀业务流程(库存查询→秒杀申请→支付)的测试脚本模板;2. 模…

作者头像 李华
网站建设 2026/4/1 9:45:17

AI如何自动生成网络调试代码?--host参数一键搞定

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 请生成一个Python Flask web应用代码,要求:1. 创建一个简单的REST API接口返回Hello World 2. 自动添加--host参数配置使服务可被局域网访问 3. 包含完整的运…

作者头像 李华
网站建设 2026/4/1 22:58:07

用IXIA IxChariot快速验证SD-WAN性能优化方案

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个SD-WAN测试配置快速生成器,针对IXIA IxChariot优化。用户输入网络拓扑和业务需求后,自动生成测试脚本和场景配置。支持常见SD-WAN厂商(如…

作者头像 李华