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

相關文章
相關標籤/搜索