理解MQTT主題

2021-10-25 04:05:00 字數 1217 閱讀 8166

mqtt主題是一種定址方式,它允許mqtt客戶端共享資訊。

mqtt主題的結構類似於檔案系統中的資料夾和檔案,使用正斜槓(/)作為分隔符。

使用這個系統,您可以建立乙個使用者友好的和自描述的命名結構,由您自己選擇。

主題名稱:

除$ sys主題外,沒有預設主題或標準主題結構。

預設情況下,除了$ sys主題外,在伺服器(broker)上不會建立任何主題。

所有主題均由訂閱或發布客戶端建立,並且不是永久性的。

僅當客戶端已訂閱主題,或者伺服器(broker)具有針對該主題儲存保留訊息或最後遺囑訊息時,該主題才存在。

$ sys主題是乙個保留的主題,大多數mqtt伺服器(broker)都使用它來發布有關伺服器(broker)的資訊。

它們是mqtt客戶端的唯讀主題。 該主題結構沒有標準,但是這裡有乙個指導原則,大多數伺服器(broker)實現似乎都在遵循。

客戶可以訂閱單個或多個主題。

訂閱多個主題時,可以使用兩個萬用字元。 他們是:

#(雜湊字元)——多級萬用字元

+(加號)——單級萬用字元

萬用字元只能用於表示乙個或多個級別,比如 / house /#,而不能用作表示多個字元的名稱的一部分,例如 hou#則是無效的.

訂閱單個主題

訂閱主題 house/#

包括訂閱主題 house/+/main-light

包括但不包括

house+ – 原因-無主題級別

house# – 原因-無主題級別

客戶只能發布到單個主題。 也就是說,不允許在發布時使用萬用字元。

例如,要將訊息發布到兩個主題,您需要兩次發布訊息。

在以下情況下動態建立主題:

更改或組合命名方案時,很可能會這樣做。

這個想法是客戶會訂閱乙個主題,例如hub1 / sensor1,並使用新主題命名house1 / main-light重新發布資料。

問:我如何訂閱所有主題?

答:訂閱#

問:我如何訂閱所有$ sys主題?

答:訂閱$ sys /#

問:我應該以/開頭我的主題層次結構嗎?

答:不需要,只是在結構中增加了另乙個層次。

問:我可以獲取伺服器(broker)所有主題的列表嗎?

答:除非您訂閱所有主題並進行掃瞄,否則不能。

問:我可以告訴誰訂閱了乙個主題嗎?

答:否問:我如何發現主題?

答:目前,除了列出所有主題以外,沒有其他機制。

MQTT主題Topic講解

文章 於 我們已經把相關的連線報文搞定了。筆者想來想去還是決定先講解一下訂閱報文 subscribe 如果傳統的通訊方式是客戶端和服務端之間一般就直接傳輸資訊。但是mqtt的通訊方式是通過發布 訂閱的方式進行的。筆者不知道他是否跟設計模式中的發布訂閱模式有沒有關係。可是他們思想卻有一點相似之處。注意...

Mqtt入門之主題與主題過濾器

主題是乙個utf 8字串,由乙個或多個主題級別組成,每個主題級別之間由正斜槓 主題級別分隔符 分隔,如下圖所示 含有萬用字元的主題,目的是讓客戶端同時訂閱多個主題。當客戶端訂閱主題時,它可以使用訊息發布到的確切主題,或者可以使用萬用字元同時訂閱更多的主題。萬用字元只能在訂閱主題時使用,並且在發布訊息...

MQTT 協議理解

mqtt特點 mqtt協議是為大量計算能力有限,且工作在低頻寬 不可靠的網路的遠端感測器和控制裝置通訊而設計的協議,它具有以下主要的幾項特性 1 使用發布 訂閱訊息模式,提供一對多的訊息發布,解除應用程式耦合 2 對負載內容遮蔽的訊息傳輸 3 使用 tcp ip 提供網路連線 4 有三種訊息發布服務...