共用方式為


Azure 事件方格 MQTT 訊息代理程式功能中的主題空間

主題空間代表透過一組主題範本的多個主題。 主題範本是支援變數以及 MQTT 萬用字元的 MQTT 篩選延伸模組。 每個主題空間都代表相同用戶端需要用來通訊的 MQTT 主題。

主題空間可用來簡化訪問控制管理,方法是讓您一次授與一組主題的發佈或訂閱存取權,而不是管理每個個別主題的存取權。 若要發佈或訂閱任何 MQTT 主題,您需要:

  1. 為每個需要透過 MQTT 通訊的用戶端建立客戶端資源。
  2. 建立 用戶端群組 ,其中包含需要存取權才能發佈或訂閱相同 MQTT 主題的用戶端。
  3. 建立 主題空間 ,其中包含代表預定主題/主題篩選的主題範本。
  4. 建立 許可權系結 ,以授與用戶端群組發佈或訂閱主題空間的存取權。

MQTT 主題篩選:

MQTT 主題篩選器是 MQTT 主題,可包含一或多個區段的通配符,使其符合多個 MQTT 主題。 它用來簡化訂用帳戶要求,因為一個主題篩選條件可以符合多個主題。

MQTT 訊息代理程式支援 MQTT 規格定義的所有 MQTT 通配符,如下所示:

  • +:符合單一區段。
    • 例如,主題篩選:「machines/+/alert」 符合下列主題:
      • machines/temp/alert
      • machines/humidity/alert
  • #:符合主題結尾的零或多個區段。
    • 例如,主題篩選:「machines/#」 符合下列主題:
      • 機器
      • machines/temp
      • 計算機/濕度
      • machines/temp/alert etc.

如需通配符的詳細資訊,請參閱 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/#"]

注意

主題空間組態更新可能需要幾分鐘的時間才能傳播。

後續步驟:

深入瞭解授權和驗證:

快速入門:

概念: