參考部落格:
主題的設計是非常重要的,首先需要了解的就是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 如何設計模型
模型是一種將事物形象化的有效手段,利用模型可將現實世界中的事物及事物之間的關係準確地表達出來。模型設計本質上就是系統地實施抽象的過程。很多時候,工程師面對的需求都是以具象的現實世界事物概念來描述的,遵循的是人類世界的語境。為了將需求落地,工程師需要開展一系列的工作,其中,模型設計尤為重要,可劃分為以...