当前位置: 首页 > news >正文

MQTT 发布/订阅模式介绍

MQTT 发布/订阅模式介绍

发布订阅模式(Publish-Subscribe Pattern)是一种消息传递模式,它将发送消息的客户端(发布者)与接收消息的客户端(订阅者)解耦,使得两者不需要建立直接的联系也不需要知道对方的存在。

MQTT 发布/订阅模式的精髓在于由一个被称为代理(Broker)的中间角色负责所有消息的路由和分发工作,发布者将带有主题的消息发送给代理,订阅者则向代理订阅主题来接收感兴趣的消息。

在 MQTT 中,主题和订阅无法被提前注册或创建,所以代理也无法预知某一个主题之后是否会有订阅者,以及会有多少订阅者,所以只能将消息转发给当前的订阅者,如果当前不存在任何订阅,那么消息将被直接丢弃。

MQTT 发布/订阅模式有 4 个主要组成部分:发布者、订阅者、代理和主题。

  • 发布者(Publisher)
    负责将消息发布到主题上,发布者一次只能向一个主题发送数据,发布者发布消息时也无需关心订阅者是否在线。
  • 订阅者(Subscriber)
    订阅者通过订阅主题接收消息,且可一次订阅多个主题。MQTT 还支持通过共享订阅的方式在多个订阅者之间实现订阅的负载均衡。
  • 代理(Broker)
    负责接收发布者的消息,并将消息转发至符合条件的订阅者。另外,代理也需要负责处理客户端发起的连接、断开连接、订阅、取消订阅等请求。
  • 主题(Topic)
    主题是 MQTT 进行消息路由的基础,它类似 URL 路径,使用斜杠 / 进行分层,比如 sensor/1/temperature。一个主题可以有多个订阅者,代理会将该主题下的消息转发给所有订阅者;一个主题也可以有多个发布者,代理将按照消息到达的顺序转发。
    MQTT 还支持订阅者使用主题通配符一次订阅多个主题。

image

MQTT 主题通配符(MQTT Wildcards)

MQTT 主题通配符包含单层通配符 + 及多层通配符 #,主要用于客户端一次订阅多个主题。

注意:通配符只能用于订阅,不能用于发布。

单层通配符

加号 (“+” U+002B) 是用于单个主题层级匹配的通配符。在使用单层通配符时,单层通配符必须占据整个层级,例如:

"+" 有效
sensor/+ 有效
sensor/+/temperature 有效
sensor+ 无效(没有占据整个层级)

如果客户端订阅了主题 sensor/+/temperature,将会收到以下主题的消息:

sensor/1/temperature
sensor/2/temperature
...
sensor/n/temperature
但是不会匹配以下主题:

sensor/temperature
sensor/bedroom/1/temperature

多层通配符

井字符号(“#” U+0023)是用于匹配主题中任意层级的通配符。多层通配符表示它的父级和任意数量的子层级,在使用多层通配符时,它必须占据整个层级并且必须是主题的最后一个字符,例如:

"#" 有效,匹配所有主题
sensor/# 有效
sensor/bedroom# 无效(没有占据整个层级)
sensor/#/temperature 无效(不是主题最后一个字符)
如果客户端订阅主题 senser/#,它将会收到以下主题的消息:

sensor
sensor/temperature
sensor/1/temperature

http://www.jsqmd.com/news/1024416/

相关文章:

  • 杭州卖黄金少亏上千!从业15年老炮私藏变现法则,避开隐形扣费全套套路 - 奢侈品回收评测
  • # 2026年临沂空调移机机构实力排行榜:兰山区河东区罗庄区,基于空调服务的5大权威推荐榜单 - 十大品牌榜
  • 2026 广东深圳全域彩钢瓦翻新防水修缮 TOP4 权威推荐|厂房金属屋面除锈喷漆公司对比 + 完整避坑指南 - 本地便民网
  • 开发环境端口老打架?试试这3招,给你的本地项目分配专属端口(附避坑指南)
  • 自由创新研究探索:青年研究者的50小时实践方法论
  • 2026年手机阅读器智能推荐功能大比拼,谁是你的最佳选择?
  • Nexior:基于Docker与Vercel的AI服务双轨交付骨架
  • Windows Mobile短信管理工具的嵌入式优化实践
  • 如何用3个步骤拯救你的损坏视频?Untrunc开源工具深度解析
  • 2026最新选型指南!全网封神的“投票管家”小程序,凭什么成为数字化评选天花板? - 亲测好用工具
  • 2026新:眉山专业甲醛检测治理公司横向测评,哪家专业靠谱?综合实测推荐成都肃醛环保科技有限公司 - 专注室内空气检测治理
  • 2026 亨得利腕表送修防骗全合集:线下假冒门店实地实测 + 正规授权网点查询步骤(值得保存收藏) - 亨得利官方维修中心
  • # 2026年国内广东广州等地泰茶培训公司实力排行榜:基于餐饮管理的十大权威推荐榜单 - 十大品牌榜
  • 2026年青岛LV包包回收测评:本地靠谱奢侈品变现渠道盘点 - 薛定谔的梨花猫
  • MPC8360E的DLL模块:时钟对齐原理、配置与实战调试
  • 2026手机靓号网推荐服务商排名 正规平台盘点 - 速递信息
  • 2026年电滑环工厂避坑指南:技术极客如何选择靠谱旋转传输伙伴 - 品牌报告
  • 若依(RuoYi)后台管理系统部署后必做的5项安全加固检查(避坑指南)
  • 2026年6月最新欧米茄中国官方售后网点服务地址与客户电话 - 欧米茄服务中心
  • 2026年西安除甲醛公司推荐榜:靠谱排名大揭秘 - 热点速览
  • MybatisPlus分页查询时,@InterceptorIgnore注解失效?一个_COUNT后缀引发的‘血案’与修复方案
  • 2026年电动伸缩门怎么选?优质品牌TOP5 实力测评与综合推荐! - 深度智识库
  • 2026年枣庄装修公司综合实力TOP5——本地靠谱家装企业深度测评 - 装企自媒体训练营辉哥
  • 中文编程实操知识库:聚焦系统脚本自动化与最后一公里问题解决
  • 2026 北京十大装修公司口碑实测排名 - 装修新知
  • Chromostatin (bovine) (Chromogranin A (124-143) (bovine))
  • 上海宝山金瑞学校:十六年一贯制国际化教育的创新实践 - 资讯报道
  • 避开这些坑!RK3568 Android13 SystemUI定制:状态栏/导航栏开关不生效的排查指南
  • 3DS游戏格式转换利器:3dsconv让你的游戏安装更简单
  • 2026 深圳黄金回收榜单!五家靠谱门店全盘点 - 讯息早知道