Azure 事件方格 MQTT 訊息代理程式功能中的主題空間
主題空間代表透過一組主題範本的多個主題。 主題範本是支援變數以及 MQTT 萬用字元的 MQTT 篩選延伸模組。 每個主題空間都代表相同用戶端需要用來通訊的 MQTT 主題。
主題空間可用來簡化訪問控制管理,方法是讓您一次授與一組主題的發佈或訂閱存取權,而不是管理每個個別主題的存取權。 若要發佈或訂閱任何 MQTT 主題,您需要:
- 為每個需要透過 MQTT 通訊的用戶端建立客戶端資源。
- 建立 用戶端群組 ,其中包含需要存取權才能發佈或訂閱相同 MQTT 主題的用戶端。
- 建立 主題空間 ,其中包含代表預定主題/主題篩選的主題範本。
- 建立 許可權系結 ,以授與用戶端群組發佈或訂閱主題空間的存取權。
MQTT 主題篩選:
MQTT 主題篩選器是 MQTT 主題,可包含一或多個區段的通配符,使其符合多個 MQTT 主題。 它用來簡化訂用帳戶要求,因為一個主題篩選條件可以符合多個主題。
MQTT 訊息代理程式支援 MQTT 規格所定義的所有 MQTT 通配符,如下所示:
- +:符合單一區段。
- 例如,主題篩選:「machines/+/alert」 符合下列主題:
- machines/temp/alert
- machines/humidity/alert
- 例如,主題篩選:「machines/+/alert」 符合下列主題:
- #:符合主題結尾的零或多個區段。
- 例如,主題篩選:「machines/#」 符合下列主題:
- 機器
- machines/temp
- 計算機/濕度
- machines/temp/alert etc.
- 例如,主題篩選:「machines/#」 符合下列主題:
如需通配符的詳細資訊,請參閱 MQTT 規格中的主題通配符。
主題範本
主題範本是支援變數以及 MQTT 萬用字元的 MQTT 篩選延伸模組。 主題空間設定也可讓您控制用戶端群組內每個客戶端的授權,以發佈或訂閱自己的主題,以提供細微的訪問控制。 深入瞭解主題範本如何提供細微訪問控制。
主題空間組態:
主題空間最多可以群組 10 個主題範本。 主題範本支援 MQTT 通配符 (+ 和 #) 和下列變數:
- ${client.authenticationName}:此變數代表用戶端的驗證名稱。 深入瞭解客戶端驗證名稱。
- ${client.attributes.x}:此變數代表在用戶端建立/更新期間指派給客戶端的屬性,例如 “x” 會等於屬性索引鍵的確切字符串。 例如,如果用戶端具有 屬性,主題範本 「area/${client.attributes.area}/telemetry」 只會讓用戶端屬性為 “area:section1” 的用戶端> 在 MQTT 主題 “area/section1/telemetry” 上發佈。 深入瞭解客戶端屬性。
注意:
以 $ 開頭的主題會保留供內部使用。
變數可以代表區段或整個區段的一部分,但不能涵蓋多個區段。 例如,主題範本可能包含 「machines/${client.authenticationName|」。。factory1}/temp“ 符合”machines/machine1.factory1/temp“、”machines/machine2.factory1/temp“ 等主題。
主題範本使用特殊字元 $ 和 |而且這些必須根據所使用的殼層以不同的方式逸出。 在 PowerShell 中,可以使用 vehicles/${dollar}telemetry/#逸出 $。 如果您使用 PowerShell,您可以逸出這些特殊字元,如下列範例所示:
"vehicles/${client.authenticationName|dollar}/#"
vehicles/${client.authenticationName"|"dollar}/#
Azure 入口網站 組態:
使用下列步驟建立主題空間:
- 移至 Azure 入口網站 中的命名空間。
- 在 [主題空間] 底下,選取 [+主題空間]。
- 將 [名稱] 指派給主題空間。
注意
- 主題空間名稱長度可以是 3-50 個字元。
- 主題空間名稱可以包含英數位元、連字元(-)和,沒有空格。
- 選取 [+新增主題範本],以新增至少一個主題範本。
- 選取 建立。
Azure CLI 組態:
使用下列命令來建立主題空間:
az eventgrid namespace topic-space create -g myRG --namespace-name myNS -n myTopicSpace --topic-templates ['segment1/+/segment3/${client.authenticationName}', "segment1/${client.attributes.attribute1}/segment3/#"]
注意
主題空間組態更新可能需要幾分鐘的時間才能傳播。
後續步驟:
深入瞭解授權和驗證: