利用MQTT一次訂閱多個主題

2021-08-10 04:19:36 字數 943 閱讀 7518

在做智慧型家居相關的應用時候,需要利用訂閱所有裝置的主題。這個時候我們需要利用mqtt的萬用字元的功能,乙個訂閱可能包含特殊字元,允許你一次定義多個主題。主題層次分隔符被用來在主題中引入層次。多層的萬用字元和單層萬用字元可以被使用,但他們不能被使用來做發布者的訊息。

/被用來分割主題樹的每一層,並給主題空間提供分等級的結構。當兩個萬用字元在乙個主題中出現的時候,主題層次分隔符的使用是很重要的。

finance/stock/ibm

finance/stock/ibm/closingprice

finance/stock/ibm/currentprice

多層萬用字元有可以表示大於等於0的層次。因此,finance/#也可以匹配到單獨的finance,在這種情況下#代表0層。在這種語境下主題層次分隔符/就沒有意義了。因為沒有可以分的層次。

多層萬用字元只可以確定當前層或者下一層。因此,#finance/#都是有效的,但是finance#不是有效的。多層萬用字元一定要是主題樹的最後乙個字元。比如說,finance/#是有效的,但是finance/#/closingprice是無效的。

單層萬用字元可以被用於主題樹的任意層級,連帶多層萬用字元。它必須被用在主題層級分隔符/的右邊,除非它是指定自己。因此,+finance/+都是有效的,但是finance+無效。單層萬用字元可以用在主題樹的末端,也可以用在中間。比如說,finance/+finance/+/ibm都是有效的。

以下的原則應用於主題樹的建造和內容

MQTT一次訂閱多個主題

利用mqtt一次訂閱多個主題 在做智慧型家居相關的應用時候,需要利用訂閱所有裝置的主題。這個時候我們需要利用mqtt的萬用字元的功能,乙個訂閱可能包含特殊字元,允許你一次定義多個主題。主題層次分隔符被用來在主題中引入層次。多層的萬用字元和單層萬用字元可以被使用,但他們不能被使用來做發布者的訊息。1....

發布訂閱自己的一次理解

前面都是先訂閱好事件,等事件可以觸發後再執行觸發。類似預售,先登記要買,等貨備好了再賣給你。能不能反過來?先發布,再訂閱?聽起來,如果先發布了卻找不到訂閱者,就像乙個發出的訊號,如果沒人回應,最終會消失掉。所以開發的思路裡,就要想方法儲存這個發出的訊號,等有人訂閱的時候,那個人就把這個訊號拿出來。c...

如何利用乙個FILE控制項,一次上傳多個附件到資料庫

using system using system.collections using system.componentmodel using system.data using system.data.sqlclient using system.drawing using system.web ...