共用方式為


快速入門:使用 Azure 入口網站在事件方格命名空間上發佈和訂閱 MQTT 訊息

在本快速入門中,您會使用 Azure 入口網站 建立已啟用 MQTT 訊息代理程式的 Event Grid 命名空間、建立用戶端、用戶端群組和主題空間等子資源、授與用戶端發佈和訂閱主題空間的存取權,然後在用戶端之間發佈和接收訊息。

必要條件

  • 如果您沒有 Azure 訂用帳戶,請建立 Azure 免費帳戶
  • 如果您不熟悉 Azure 事件方格,請先閱讀事件方格概觀,再開始本教學課程。
  • 確定您的防火牆已開啟連接埠 8883。 本教學課程中的範例會使用 MQTT 通訊協定,其會透過連接埠 8883 進行通訊。 某些公司和教育網路環境可能會封鎖此連接埠。
  • 您必須要有 X.509 用戶端憑證,以產生指紋並驗證用戶端連線。

產生樣本用戶端憑證和指紋

如果您還沒有憑證,您可以使用 步驟 CLI建立樣本憑證。 針對 Windows 請考慮手動安裝。

成功安裝 Step 之後,您應該在使用者設定檔資料夾中開啟命令提示字元 (Win+R 類型 %USERPROFILE%)。

  1. 若要建立根憑證和中繼憑證,請執行下列命令。 請記住密碼,在下一個步驟中需要使用該密碼。

    step ca init --deployment-type standalone --name MqttAppSamplesCA --dns localhost --address 127.0.0.1:443 --provisioner MqttAppSamplesCAProvisioner
    
  2. 使用所產生的 CA 檔案,為第一個用戶端建立憑證。 對於命令中的憑證和秘密檔案,確保使用正確的路徑。

    step certificate create client1-authn-ID client1-authn-ID.pem client1-authn-ID.key --ca .step/certs/intermediate_ca.crt --ca-key .step/secrets/intermediate_ca_key --no-password --insecure --not-after 2400h
    
  3. 若要檢視指紋,請執行 Step 命令。

    step certificate fingerprint client1-authn-ID.pem
    
  4. 現在,為第二個用戶端建立憑證。

    step certificate create client2-authn-ID client2-authn-ID.pem client2-authn-ID.key --ca .step/certs/intermediate_ca.crt --ca-key .step/secrets/intermediate_ca_key --no-password --insecure --not-after 2400h
    
  5. 若要檢視要搭配第二個用戶端使用的指紋,請執行 Step 命令。

    step certificate fingerprint client2-authn-ID.pem
    

建立命名空間

  1. 登入 Azure 入口網站

  2. 在搜尋列中,輸入事件方格命名空間,然後從下拉式清單中選取 [事件方格命名空間]

    在 Azure 入口網站 上搜尋事件方格命名空間的螢幕快照。

  3. 在 [事件方格命名空間] 頁面上,選取工具列上的 [+ 建立]

  4. 在 [建立命名空間] 頁面上,遵循下列步驟:

    1. 選取 Azure 訂閱。

    2. 選取現有的資源群組或選取 [新建],然後輸入資源群組的名稱。

    3. 提供命名空間的唯一名稱。 每個區域的命名空間名稱必須是唯一的,因為它代表 DNS 項目。 請勿使用影像中顯示的名稱。 而是建立您自己的名稱 - 它必須介於 3 到 50 個字元之間,且只包含值 a-z、A-Z、0-9 和 -

    4. 選取事件方格命名空間的位置。 目前,事件方格命名空間僅適用於選取的區域。

      顯示事件方格命名空間建立流程基本概念索引標籤的螢幕快照。

  5. 選取頁面底部的 [檢閱 + 建立] 。

  6. 在 [建立命名空間] 頁面的 [檢閱 + 建立] 索引標籤上,選取 [建立]

    注意

    若要讓快速入門保持簡單,您應使用 [基本] 頁面來建立命名空間。 如需在精靈的其他頁面上設定網路、安全性和其他設定的詳細步驟,請參閱建立命名空間

  7. 部署成功之後,選取 [移至資源] 以瀏覽至命名空間的 [事件方格命名空間概觀] 頁面。

  8. 在 [概觀] 頁面中,您會看到 [MQTT 訊息代理程式] 處於 [停用] 狀態。 若要啟用 MQTT 訊息代理程式,請選取 [停用] 連結,它會將您重新導向至 [設定] 頁面。

  9. 在 [設定] 頁面上,選取 [啟用 MQTT 訊息代理程式] 選項,然後選取 [套用] 以套用設定。

    顯示 [事件方格] 命名空間設定頁面以啟用 MQTT 的螢幕擷取畫面。

建立用戶端

  1. 在左側功能表上,選取 [MQTT 訊息代理程式] 區段中的 [用戶端]

  2. 在 [用戶端] 頁面上,選取工具列上的 [+ 用戶端]

    [用戶端] 頁面的螢幕快照,其中已選取 [新增] 按鈕。

  3. 在 [建立用戶端] 頁面上,輸入用戶端的名稱。 用戶端名稱在命名空間中必須是唯一的。

  4. 用戶端驗證名稱預設為用戶端名稱。 在本教學課程中,將其變更為 client1-authn-ID。 您必須將此名稱納入為 CONNECT 封包中的 Username

  5. 在本教學課程中,您會使用指紋型驗證。 在 [主要指紋] 中包含第一個用戶端憑證的指紋。

    用戶端 1 設定的螢幕快照。

  6. 選取工具列上的 [建立] 以建立另一個用戶端。

  7. 重複上述步驟,以建立名為 client2 的第二個用戶端。 將驗證名稱變更為 client2-authn-ID,並在 [主要指紋] 中包含第二個用戶端憑證的指紋。

    用戶端 2 設定的螢幕快照。

    注意

    • 為了簡化快速入門,您會使用指紋比對進行驗證。 如需使用 X.509 CA 憑證鏈結進行用戶端驗證的詳細步驟,請參閱使用憑證鏈結進行用戶端驗證
    • 此外,我們使用預設 $all 用戶端群組,其中包含此練習的命名空間中的所有用戶端。 若要深入了解如何使用用戶端屬性建立自訂用戶端群組,請參閱用戶端群組。

建立主題空間

  1. 在左側功能表上,選取 [MQTT 訊息代理程式] 區段中的 [主題空間]

  2. 在 [主題空間] 頁面上,選取工具列上的 [+ 主題空間]

    [主題空間] 頁面的螢幕快照,其中已選取 [建立] 按鈕。

  3. 在 [建立主題空間] 頁面上,提供主題空間的名稱

    使用名稱建立主題空間的螢幕快照。

  4. 輸入主題範本的 contosotopics/topic1,然後選取 [建立] 以建立主題空間。

    主題空間設定的螢幕快照。

使用權限繫結設定存取控制

  1. 在左側功能表上,選取 [MQTT 訊息代理程式] 區段中 的 [權限繫結]

  2. 在 [權限繫結] 頁面上,選取工具列上的 [+ 權限繫結]

    顯示已選取 [建立] 按鈕之 [許可權系結] 頁面的螢幕快照。

  3. 設定權限繫結,如下所示:

    1. 提供權限繫結的名稱。 例如: contosopublisherbinding

    2. 針對 [用戶端群組名稱],選取 [$all]

    3. 針對 [主題空間名稱],選取您在上一個步驟中建立的主題空間。

    4. 將 [發行者] 權限授予主題空間上的用戶端群組。

      顯示建立第一個許可權系結的螢幕快照。

  4. 選取 [建立] 以建立權限繫結。

  5. 選取工具列上的 [+ 權限繫結],多建立一個權限繫結 (contososubscriberbinding)。

  6. 如下所示提供名稱,並將對 [ContosoTopicSpace] 的 [訂閱者] 存取權提供給 [$all] 用戶端群組。

    顯示建立第二個許可權系結的螢幕快照。

  7. 選取 [建立] 以建立權限繫結。

使用 MQTTX 應用程式將用戶端連線到 EG 命名空間

  1. 如需發佈/訂閱 MQTT 訊息,您可使用任何喜愛的工具。 為了示範目的,發佈/訂閱是使用 MQTTX 應用程式來顯示,您可以從 https://mqttx.app/ 下載該應用程式。

  2. 選擇左側 + 導覽欄上的 。

  3. 使用以下內容設定 client1:

    • [名稱]client1 (此值可以是任何值)

    • [用戶端識別碼]client1-session1 (CONNECT 套件中的用戶端識別碼用來識別用戶端連線的工作階段識別碼)

    • [使用者名稱]client1-authn-ID。 此值必須符合您在 Azure 入口網站中建立用戶端時所指定的 [用戶端驗證名稱] 值。

      重要

      使用者名稱必須符合用戶端中繼資料中的用戶端驗證名稱。

  4. 從命名空間的 [概觀] 頁面,將主機名稱更新為 MQTT 主機名稱。

    此螢幕快照顯示具有 MQTT 主機名的事件方格命名空間概觀頁面。

  5. 將 [連接埠] 更新為 [8883]

  6. 將 [SSL/TLS] 切換為 [開啟]。

  7. 將 [SSL 安全] 切換為 [開啟],以確保服務憑證驗證。

  8. 選取 [憑證] 作為 [CA] 或 [自我簽署憑證]。

  9. 提供用戶端憑證檔案的路徑。

  10. 提供用戶端金鑰檔案的路徑。

  11. 其餘的設定可保留預先定義的預設值。

    顯示 MQTTX 應用程式上用戶端 1 組態第 1 部分的螢幕快照。

  12. 選取 [連線] 將用戶端連線至 MQTT 訊息代理程式。

  13. 使用如下所示的對應驗證資訊,重複上述步驟來連接第二個用戶端 client2

    顯示 MQTTX 應用程式上用戶端 2 組態第 1 部分的螢幕快照。

    顯示 MQTTX 應用程式上用戶端 2 組態第 2 部分的螢幕快照。

使用 MQTTX 應用程式進行發佈/訂閱

  1. 連接用戶端之後,針對 client2,選取 [+ 新增訂用帳戶] 按鈕。

  2. contosotopics/topic1 新增為主題,然後選取 [確認]。 您可將其他欄位保留現有的預設值。

    顯示 MQTTX 應用程式訂用帳戶主題設定的螢幕快照。

  3. 選取左側滑軌中的 [client1]

  4. 針對 client1,在訊息撰寫方塊上方,鍵入 contosotopics/topic1 作為要發佈的主題。

  5. 撰寫訊息。 您可以使用任何格式或 JSON,如下所示。

  6. 選取 [Send] \(傳送\) 按鈕。

    此螢幕快照顯示 MQTTX 應用程式中主題上的訊息發布。

  7. 訊息應該會顯示為在 client1 中發佈。

    此螢幕快照顯示 MQTTX 應用程式中主題上發佈的訊息。

  8. 切換至 client2。 確認 client2 已收到訊息。

    此螢幕快照顯示訂閱用戶端在 MQTTX 應用程式上收到的訊息。