mqtt 获取所有topic_MQTT--topic(主题通配符)设计 - CSDN博客

本文详细介绍了MQTT协议中Topic的设计,包括主题层级分隔符、多层通配符`#`、单层通配符`+`的使用规则。讲解了如何通过这些规则实现不同层级的匹配,以及通配符在订阅和发布中的限制。对于理解MQTT通信和构建高效的消息订阅策略具有指导意义。
摘要由CSDN通过智能技术生成

主题的设计是非常重要的,首先需要了解的就是MQTT主题过滤规则。

1、topic

定阅与发布必须要有主题,只有当定阅了某个主题后,才能收到相应主题的payload,才能进行通信。

2、 主题层级分隔符—“/”

主题层级分隔符使得主题名结构化。如果存在分隔符,它将主题名分割为多个主题层级。斜杠(‘/’ U+002F)用于分割主题的每个层级,为主题名提供一个分层结构。当客户端订阅指定的主题过滤器包含两种通配符时,主题层级分隔符就很有用了。主题层级分隔符可以出现在主题过滤器或主题名字的任何位置。相邻的主题层次分隔符表示一个零长度的主题层级。

如主题: room212/electric

room212/tv/contrl/sensor

room212/tv/contrl/lightroom212/air/sensor

3、 多层通配符—-“#”

“#”是用于匹配主题中任意层级的通配符。多层通配符表示它的父级和任意数量的子层级。多层通配符必须位于它自己的层级或者跟在主题层级分隔符后面。不管哪种情况,它都必须是主题过滤器的最后一个字符 .

例如,如果客户端订阅主题 “china/xiangtan/#”,它会收到使用下列主题名发布的消息: china/xiangtan

china/xiangtan/yuhu

china/xiangtan/yuetan/hnie

china/xiangtan/jiuhua/jiakao/kemusan

定阅主题示例 school/#//也匹配单独的 “school” ,因为 # 包括它的父级。#//是有效的,会收到所有的应用消息。school/teacher/#//有效的。school/teacher#//无效的。school/teacher/#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值