MQTT主题通配符

      订阅也许会包含特殊字符,允许一次订阅多个主题。
     使用顶层分隔符意在主题中引入结构概念,因此能够为达到该目标,在主题内指定。多层通配符与单层通配符可用于订阅但是不能用于消息发布方的主题内。

顶层分隔符

     前向/用于分隔主题树内不同层次,为主题空间提供层次化的结构。当订阅者指定主题遇到两个通配符时,使用顶层分隔符是十分重要的。

多层通配符

         #号可以匹配主题内任何层次,例如,订阅finance/stock/ibm/#,可以在以下主题上接收到消息:
     finance/stock/ibm
     finance/stock/ibm/closingprice
     finance/stock/ibm/currentprice
多层通配符可以代表零或多个层次,因此,finance/#也能够匹配单一finance,其中#代表零层次。顶层分隔符在该上下文环境中是无意义的,因为无层次进行分隔。
     可以指定多层通配符仅仅自己或者在顶层分隔符之后。因此,#与finance/#都是有效的,但是finance#无效。多层通配符在主题树内必须是最后一个使用字符,例如finance/#有效,但是finance/#/closingprice无效。

单层通配符

     +号仅仅匹配一个主题层次。例如,finance/stock/+匹配finance/stock/ibm与finance/stock/xyz,但是不匹配finance/stock/ibm/closingprice。因为单层次通配符仅仅匹配一个层次,finance/+不匹配finance
     单层次通配符可用于主题树内任何层次,并与多层次通配符一起使用。必须用于在顶层分隔符之后,除了当自己指定时。因此,+和finance/+ 都是有效的,但是finance+无效。单层通配符可用于主题树最后或者在主题树内,例如,finance/+与finance/+/ibm都是有效的。

主题语义与用法

     搭建一个应用程序时,主题树设计应当考虑以下主题名称语法与语义原则:
主体必须至少一个字符;
主题名称大小写敏感,例如,ACCOUNTS与Accounts应当为两个不同主题;
主题名称可以包括空白字符,例如,Accounts payable为有效主题;
前导/创建一个独立主题,例如,/finance不同于finance,/finance匹配+/+和/+,但不是+;
主题内不要包括空字符(Unicode \x 0000)
  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MQTT订阅通配符分为单级通配符和多级通配符。单级通配符使用"+"表示,可以订阅多个主题。但是通配符只能用于订阅主题,不能用于发布消息。 多级通配符使用"#"表示,当客户端使用多级通配符订阅主题时,它会接收以通配符之前的模式开头的主题的所有消息,无论主题有多长或多深。如果只将多级通配符指定为主题(#),将会收到发送到MQTT代理的所有消息。然而,如果期望高吞吐量,仅使用多级通配符的订阅是一种反模式,不推荐使用。 需要注意的是,在MQTT中,主题名称不允许包含任何通配符字符(#)。因此,在做MQTT订阅端时,如果主题名称包含通配符字符,会报错。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [MQTT 基础--MQTT 主题通配符和最佳实践 :第 5 部分](https://blog.csdn.net/claytang/article/details/125630253)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Java MQTT订阅端,可订阅通配符(/#)](https://blog.csdn.net/lzl980111/article/details/109801122)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值