网络协议

Mqtt 客户端多主题订阅

2020-04-02  本文已影响0人  水车

前言: mqtt 的主题一个层级的概念. 我们订阅多个主题就需要用到这个技术点
功能是在主题中引入层次。层次又分主题层级分隔符,多层通配符和单层通配符
需要注意的一点是: 这些层级不能用在发布消息的 Publish 接口中

主题层级分隔符

"/" 被用来分割主题树的每一层,并给主题空间提供分等级的结构。当两个通配符在一个主题中出现的时候,主题层次分隔符的使用是很重要的。

// 主题Topic1: 分了三层
/test/child/aaa
// 主题Topic2: 分了四层
/test/child/aaa2/bbb2

多层通配符

多层通配符"#"是一个匹配主题中任意层次数的通配符。我们用案例说明

案例1
订阅主题: /test/child/#
我们将收到这些主题发送来的消息:

/test/child 
/test/child/aaa
/test/child/ccc
/test/child/aaa/bbb
/test/child/aaa/bbb/ddd

多层通配符可以理解为大于等于0的层次。
多层通配符只可以确定当前层或者下一层

常见错误 和正确表示案例

#   // Success, 会接收到不以 / 开头的所有主题
/#  // Success
/test/#/child   // Error, #必须是最后一个字符
/test/#           // Success
/test/child#    //Error  无效的通配符
/test/child/#   // Success

单层通配符

单层通配符 "+" 只匹配主题的一层

案例1
订阅主题: /test/child/+
我们将收到这些主题发送来的消息:
注意:接收不到 /test/child 主题发送的消息

/test/child/aaa
/test/child/bbb
/test/child/ccc

常见错误 和正确表示案例

+  //Success
/+  // Success
/test/+/child   // Success, 
/test/+           // Success
/test/child+    //Error  无效的通配符
/test/child/+   // Success

主题语法和用法

当你建立一个应用,设计主题树的时候应该考虑以下的主题名字的语法和语义:

以下的原则应用于主题树的建造和内容

上一篇 下一篇

猜你喜欢

热点阅读