美文网首页网络协议
Mqtt 客户端多主题订阅

Mqtt 客户端多主题订阅

作者: 水车 | 来源:发表于2020-04-02 15:59 被阅读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

主题语法和用法

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

  • 主题至少有一个字符长。
  • 主题名字是大小写敏感的。比如说,ACCOUNTS和Accounts是两个不同的主题。
  • 主题名字可以包含空格。比如,Accounts payable是一个有效的主题。
  • 以/开头会产生一个不同的主题。比如说,/finnace与finance不同。/finance匹配"+/+"和/+,但不匹配+
  • 不要在任何主题中包含null(Unicode \x0000)字符。

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

  • 在主题树中,长度被限制于64k内但是在这以内没有限制层级的数目 。
  • 可以有任意数目的根节点;也就是说,可以有任意数目的主题树

相关文章

  • Mqtt 客户端多主题订阅

    前言: mqtt 的主题一个层级的概念. 我们订阅多个主题就需要用到这个技术点功能是在主题中引入层次。层次又分主题...

  • EMQ X MQTT 5.0 主题重写

    EMQ X 的主题重写功能支持根据用户配置的规则在 MQTT 客户端订阅主题、发布消息、取消订阅的时候将 A 主题...

  • Mosquitto 配置信息

    MQTT客户端可以通过订阅位于$SYS层次下的主题来查看mosquitto服务器的状态信息。标记为Static的主...

  • MQTT02 主题

    @[toc] 主题(消息路由),子主题,分组订阅(共享订阅) (1) 常见的主题形式以及定义 mqtt 常见的to...

  • 可视化网关编程系列教程-----(8)MQTT设备接入与控制

    MQTT 协议介绍 MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于...

  • iOS MQTTClient 证书 遗嘱设置

    MQTT MQTT是一个基于客户端服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些...

  • MQTT在Android中的使用

    首先要明白,MQTT通信是客户端和客户端之间的相互订阅,MQTT中只存在一个服务器,作为消息的中转站,其余客户端之...

  • 2020-05-04 结合Netty和moquette模拟MQT

    模拟MQTT订阅客户端【Qos暂时只支持1】 1.subClient 2.SubMQTTClientHandler...

  • 2020-05-04 MQTT服务器和订阅发布客户端测试

    MQTT服务端和客户端测试结果 1.服务端启动: 2.订阅客户端启动:订阅客户端发送请求步骤:2.1首先向服务端发...

  • MQTT总结

    MQTT总结 使用MQTT以订阅消息的方式保持客户端和服务端的通讯。MQTT 是IBM开发的一个即时通讯协议,有可...

网友评论

    本文标题:Mqtt 客户端多主题订阅

    本文链接:https://www.haomeiwen.com/subject/jguxphtx.html