QMTT主題設計

2021-09-25 14:33:35 字數 2070 閱讀 4734

參考部落格:

主題的設計是非常重要的,首先需要了解的就是mqtt主題過濾規則。

1、topic

定閱與發布必須要有主題,只有當定閱了某個主題後,才能收到相應主題的payload,才能進行通訊。

2、 主題層級分隔符—「/」

主題層級分隔符使得主題名結構化。如果存在分隔符,它將主題名分割為多個主題層級。斜槓(『/』 u+002f)用於分割主題的每個層級,為主題名提供乙個分層結構。當客戶端訂閱指定的主題過濾器包含兩種萬用字元時,主題層級分隔符就很有用了。主題層級分隔符可以出現在主題過濾器或主題名字的任何位置。相鄰的主題層次分隔符表示乙個零長度的主題層級。

如主題:

room212/electric

room212/tv/contrl/sensor

room212/tv/contrl/light

room212/air/sensor12

343、 多層萬用字元—-「#」

「#」是用於匹配主題中任意層級的萬用字元。多層萬用字元表示它的父級和任意數量的子層級。多層萬用字元必須位於它自己的層級或者跟在主題層級分隔符後面。不管哪種情況,它都必須是主題過濾器的最後乙個字元 .

例如,如果客戶端訂閱主題 「china/xiangtan/#」,它會收到使用下列主題名發布的訊息:

china/xiangtan

china/xiangtan/yuhu

china/xiangtan/yuetan/hnie

china/xiangtan/jiuhua/jiakao/kemusan12

34定閱主題示例

school/#                //也匹配單獨的 「school」 ,因為 # 包括它的父級。

#                       //是有效的,會收到所有的應用訊息。

school/teacher/#        //有效的。

school/teacher#         //無效的。

school/teacher/#/lever  //無效的,必須是主題過濾器的最後乙個字元12

3454、 單層萬用字元—-「+」

加號是只能用於單個主題層級匹配的萬用字元。在主題過濾器的任意層級都可以使用單層萬用字元,包括第乙個和最後乙個層級。然而它必須佔據過濾器的整個層級 。可以在主題過濾器中的多個層級中使用它,也可以和多層萬用字元一起使用。

china/+ 只能匹配 china/guangzhou

china/+/+/zhongshanlu 能匹配china/guangzhou/tianhe/zhongshanlu和china/shenzhen/nanshan/zhongshanlu

5、 萬用字元 —-「$」

萬用字元「$」表示匹配乙個字元,只要不是放在主題的最開頭,即:

$xx/$xx

/xx$12

3其它情況下都表示匹配乙個字元。

如果客戶端想同時接受以 「sys/」開頭主題的訊息和不以 開頭主題的訊息, 它需要同時訂閱 「#」 和 「「$sys/#」。

6、 總結

1、所有的主題名和主題過濾器必須至少包含乙個字元

2、主題名或主題過濾器以前置或後置斜槓 「/」 區分

3、只包含斜槓 「/」 的主題名或主題過濾器是合法的

4、主題名和主題過濾器是 utf-8 編碼字串, 它們不能超過 65535 位元組

5、主題名和主題過濾器是區分大小寫的

主題層級分隔符 / : 用於分割主題層級,/分割後的主題,這是訊息主題層級設計中很重要的符號。 比方說: aaa/bbb和 aaa/bbb/ccc 和aaa/bbb/ccc/ddd ,這樣的訊息主題格式,是乙個層層遞進的關係,可通過多層萬用字元同時匹配兩者,或者單層萬用字元只匹配乙個。 這在現實場景中,可以應用到:公司的部門層級推送、國家城市層級推送等包含層級關係的場景。

單層萬用字元 +: 單層萬用字元只能匹配一層主題。比如: aaa/+ 可以匹配 aaa/bbb ,但是不能匹配aaa/bbb/ccc。 單獨的+號可以匹配單層的所有推送

多層萬用字元 #: 多層萬用字元可以匹配於多層主題。比如: aaa/# 不但可以匹配aaa/bbb,還可以匹配aaa/bbb/ccc/ddd。 也就是說,多層萬用字元可以匹配符合萬用字元之前主題層級的所有子集主題。單獨的#匹配所有的訊息主題.

景觀設計主題命名 景觀設計主題

轉 園林設計裡為景點取名 園林景觀取名命名總匯參考 亭 松濤亭 耦香亭 百花亭 木香亭 怡紅亭 聽泉亭 探月亭 扇面亭 桂香亭 青楓亭 迎春亭 翼然亭 望荷亭 沁芳亭 賞心亭 知春亭 流杯亭 鑑碧亭 神秀亭 可中亭 仙弈亭 蘭亭 春光亭 可亭 冠雲亭 天泉亭 放 眼亭 涵青亭 倚虹亭 待霜亭 雪香雲...

華為主題設計

核取方塊和開關 name emui white bg aa6586a0color 核取方塊內部背景顏色 name emui checkbox boxedge 666586a0color name emui checkbox boxedge 556586a0color name switch trac...

主題 03 如何設計模型

模型是一種將事物形象化的有效手段,利用模型可將現實世界中的事物及事物之間的關係準確地表達出來。模型設計本質上就是系統地實施抽象的過程。很多時候,工程師面對的需求都是以具象的現實世界事物概念來描述的,遵循的是人類世界的語境。為了將需求落地,工程師需要開展一系列的工作,其中,模型設計尤為重要,可劃分為以...