MQTT通配符

特别提示:本人博客部分有参考网络其余博客,但均是本人亲手编写过并验证经过。如发现博客有错误,请及时提出以避免误导其余人,谢谢!欢迎转载,但记得标明文章出处: http://www.cnblogs.com/mao2080/

一个订阅可能包含特殊字符,容许你一次定义多个主题。html

主题层次分隔符被用来在主题中引入层次。多层的通配符和单层通配符能够被使用,但他们不能被使用来作发布者的消息。web

一、主题层级分隔符/

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

二、多层通配符#

# 是一个匹配主题中任意层次数的通配符。好比说,若是你订阅了finance/stock/ibm/#,你就能够接收到如下这些主题的消息。app

一、finance/stock/ibm
二、finance/stock/ibm/closingprice
三、finance/stock/ibm/currentprice
多层通配符有能够表示大于等于0的层次。所以,finance/#也能够匹配到单独的finance,在这种状况下#表明0层。在这种语境下主题层次分隔符/就没有意义了。由于没有能够分的层次。网站

多层通配符只能够肯定当前层或者下一层。所以,#和finance/#都是有效的,可是finance#不是有效的。多层通配符必定要是主题树的最后一个字符。好比说,finance/#是有效的,可是finance/#/closingprice是无效的。.net

三、单层通配符+

+ 只匹配主题的一层。好比说,finance/stock/+匹配finance/stock/ibm和finance/stock/xyz,可是不匹配finance/stock/ibm/closingprice。另外,由于单层通配符只匹配1层,finance/+不匹配finance。设计

单层通配符能够被用于主题树的任意层级,连带多层通配符。它必须被用在主题层级分隔符/的右边,除非它是指定本身。所以,+和finance/+都是有效的,可是finance+无效。单层通配符能够用在主题树的末端,也能够用在中间。好比说,finance/+和finance/+/ibm都是有效的。code

四、主题语法和用法

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

主题至少有一个字符长。
主题名字是大小写敏感的。好比说,ACCOUNTS和Accounts是两个不一样的主题。
主题名字能够包含空格。好比,Accounts payable是一个有效的主题。
以/开头会产生一个不一样的主题。好比说,/finnace与finance不一样。/finance匹配"+/+"和/+,但不匹配+
不要在任何主题中包含null(Unicode \x0000)字符。
如下的原则应用于主题树的建造和内容blog

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

五、参考网站

http://blog.csdn.net/waltonhuang/article/details/52066908

六、原文地址

http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/mqtt-v3r1.html#appendix-a

相关文章
相关标签/搜索