news 2026/4/23 13:49:09

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/4/23 12:16:01

5分钟快速验证:Maven原型项目生成器

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个Maven原型生成器,功能包括:1.常用项目模板(SpringBoot/WebApp/Library等) 2.交互式参数配置 3.依赖自动分析 4.一键生成可运行项目 5.生成Dockerfil…

作者头像 李华
网站建设 2026/4/23 13:45:14

Delphi新手必看:Runtime Error 217完全解决指南

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个交互式学习工具,帮助新手理解Runtime Error 217:1. 基础知识讲解模块;2. 可视化内存操作演示;3. 简单错误重现和修复练习&am…

作者头像 李华
网站建设 2026/4/23 13:45:16

栈与stack

前言 今天接着和大家分享数据结构中栈相关的知识,特别是与java集合框架相关的内容,如果有了顺序表与链表的基础,接触今天分享的会是相当容易上手的,话不多说,让我们开始吧一、java集合框架与StackJava 集合框架是 Java 中用于存储和操作一组对象的体系,核心分为 Col…

作者头像 李华
网站建设 2026/4/23 13:42:09

15分钟搭建实时股票行情推送原型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个实时股票行情推送系统原型,包含:1. 后端使用Flux生成随机变动的股票数据(代码/名称/价格);2. 通过Server-Sent E…

作者头像 李华
网站建设 2026/4/14 22:22:56

AI助力:一键生成Conda环境配置脚本

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个Python项目,使用Conda管理环境。项目需要包含以下依赖:numpy, pandas, matplotlib, scikit-learn。请生成一个完整的Conda环境配置脚本(…

作者头像 李华
网站建设 2026/4/23 13:09:46

企业级应用中Runtime Error 217的实战解决方案

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个企业应用错误诊断工具,针对Runtime Error 217提供:1. 错误重现环境;2. 内存快照分析功能;3. 调用堆栈追踪;4. 与…

作者头像 李华