快速入門:使用 Azure 入口網站在事件方格命名空間上發佈和訂閱 MQTT 訊息
在本快速入門中,您會使用 Azure 入口網站 建立已啟用 MQTT 訊息代理程式的 Event Grid 命名空間、建立用戶端、用戶端群組和主題空間等子資源、授與用戶端發佈和訂閱主題空間的存取權,然後在用戶端之間發佈和接收訊息。
必要條件
- 如果您沒有 Azure 訂用帳戶,請建立 Azure 免費帳戶。
- 如果您不熟悉 Azure 事件方格,請先閱讀事件方格概觀,再開始本教學課程。
- 確定您的防火牆已開啟連接埠 8883。 本教學課程中的範例會使用 MQTT 通訊協定,其會透過連接埠 8883 進行通訊。 某些公司和教育網路環境可能會封鎖此連接埠。
- 您必須要有 X.509 用戶端憑證,以產生指紋並驗證用戶端連線。
產生樣本用戶端憑證和指紋
如果您還沒有憑證,您可以使用 步驟 CLI建立樣本憑證。 針對 Windows 請考慮手動安裝。
成功安裝 Step 之後,您應該在使用者設定檔資料夾中開啟命令提示字元 (Win+R 類型 %USERPROFILE%)。
若要建立根憑證和中繼憑證,請執行下列命令。 請記住密碼,在下一個步驟中需要使用該密碼。
step ca init --deployment-type standalone --name MqttAppSamplesCA --dns localhost --address 127.0.0.1:443 --provisioner MqttAppSamplesCAProvisioner
使用所產生的 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
若要檢視指紋,請執行 Step 命令。
step certificate fingerprint client1-authn-ID.pem
現在,為第二個用戶端建立憑證。
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
若要檢視要搭配第二個用戶端使用的指紋,請執行 Step 命令。
step certificate fingerprint client2-authn-ID.pem
建立命名空間
登入 Azure 入口網站。
在搜尋列中,輸入事件方格命名空間,然後從下拉式清單中選取 [事件方格命名空間]。
在 [事件方格命名空間] 頁面上,選取工具列上的 [+ 建立]。
在 [建立命名空間] 頁面上,遵循下列步驟:
選取 Azure 訂閱。
選取現有的資源群組或選取 [新建],然後輸入資源群組的名稱。
提供命名空間的唯一名稱。 每個區域的命名空間名稱必須是唯一的,因為它代表 DNS 項目。 請勿使用影像中顯示的名稱。 而是建立您自己的名稱 - 它必須介於 3 到 50 個字元之間,且只包含值 a-z、A-Z、0-9 和
-
。選取事件方格命名空間的位置。 目前,事件方格命名空間僅適用於選取的區域。
選取頁面底部的 [檢閱 + 建立] 。
在 [建立命名空間] 頁面的 [檢閱 + 建立] 索引標籤上,選取 [建立]。
注意
若要讓快速入門保持簡單,您應使用 [基本] 頁面來建立命名空間。 如需在精靈的其他頁面上設定網路、安全性和其他設定的詳細步驟,請參閱建立命名空間。
部署成功之後,選取 [移至資源] 以瀏覽至命名空間的 [事件方格命名空間概觀] 頁面。
在 [概觀] 頁面中,您會看到 [MQTT 訊息代理程式] 處於 [停用] 狀態。 若要啟用 MQTT 訊息代理程式,請選取 [停用] 連結,它會將您重新導向至 [設定] 頁面。
在 [設定] 頁面上,選取 [啟用 MQTT 訊息代理程式] 選項,然後選取 [套用] 以套用設定。
建立用戶端
在左側功能表上,選取 [MQTT 訊息代理程式] 區段中的 [用戶端]。
在 [用戶端] 頁面上,選取工具列上的 [+ 用戶端]。
在 [建立用戶端] 頁面上,輸入用戶端的名稱。 用戶端名稱在命名空間中必須是唯一的。
用戶端驗證名稱預設為用戶端名稱。 在本教學課程中,將其變更為
client1-authn-ID
。 您必須將此名稱納入為 CONNECT 封包中的Username
。在本教學課程中,您會使用指紋型驗證。 在 [主要指紋] 中包含第一個用戶端憑證的指紋。
選取工具列上的 [建立] 以建立另一個用戶端。
重複上述步驟,以建立名為
client2
的第二個用戶端。 將驗證名稱變更為client2-authn-ID
,並在 [主要指紋] 中包含第二個用戶端憑證的指紋。注意
- 為了簡化快速入門,您會使用指紋比對進行驗證。 如需使用 X.509 CA 憑證鏈結進行用戶端驗證的詳細步驟,請參閱使用憑證鏈結進行用戶端驗證。
- 此外,我們使用預設
$all
用戶端群組,其中包含此練習的命名空間中的所有用戶端。 若要深入了解如何使用用戶端屬性建立自訂用戶端群組,請參閱用戶端群組。
建立主題空間
在左側功能表上,選取 [MQTT 訊息代理程式] 區段中的 [主題空間]。
在 [主題空間] 頁面上,選取工具列上的 [+ 主題空間]。
在 [建立主題空間] 頁面上,提供主題空間的名稱。
輸入主題範本的
contosotopics/topic1
,然後選取 [建立] 以建立主題空間。
使用權限繫結設定存取控制
在左側功能表上,選取 [MQTT 訊息代理程式] 區段中 的 [權限繫結]。
在 [權限繫結] 頁面上,選取工具列上的 [+ 權限繫結]。
設定權限繫結,如下所示:
提供權限繫結的名稱。 例如:
contosopublisherbinding
。針對 [用戶端群組名稱],選取 [$all]。
針對 [主題空間名稱],選取您在上一個步驟中建立的主題空間。
將 [發行者] 權限授予主題空間上的用戶端群組。
選取 [建立] 以建立權限繫結。
選取工具列上的 [+ 權限繫結],多建立一個權限繫結 (
contososubscriberbinding
)。如下所示提供名稱,並將對 [ContosoTopicSpace] 的 [訂閱者] 存取權提供給 [$all] 用戶端群組。
選取 [建立] 以建立權限繫結。
使用 MQTTX 應用程式將用戶端連線到 EG 命名空間
如需發佈/訂閱 MQTT 訊息,您可使用任何喜愛的工具。 為了示範目的,發佈/訂閱是使用 MQTTX 應用程式來顯示,您可以從 https://mqttx.app/ 下載該應用程式。
選擇左側 + 導覽欄上的 。
使用以下內容設定 client1:
[名稱] 為
client1
(此值可以是任何值)[用戶端識別碼] 為
client1-session1
(CONNECT 套件中的用戶端識別碼用來識別用戶端連線的工作階段識別碼)[使用者名稱] 為
client1-authn-ID
。 此值必須符合您在 Azure 入口網站中建立用戶端時所指定的 [用戶端驗證名稱] 值。重要
使用者名稱必須符合用戶端中繼資料中的用戶端驗證名稱。
從命名空間的 [概觀] 頁面,將主機名稱更新為 MQTT 主機名稱。
將 [連接埠] 更新為 [8883]。
將 [SSL/TLS] 切換為 [開啟]。
將 [SSL 安全] 切換為 [開啟],以確保服務憑證驗證。
選取 [憑證] 作為 [CA] 或 [自我簽署憑證]。
提供用戶端憑證檔案的路徑。
提供用戶端金鑰檔案的路徑。
其餘的設定可保留預先定義的預設值。
選取 [連線] 將用戶端連線至 MQTT 訊息代理程式。
使用如下所示的對應驗證資訊,重複上述步驟來連接第二個用戶端 client2。
使用 MQTTX 應用程式進行發佈/訂閱
連接用戶端之後,針對 client2,選取 [+ 新增訂用帳戶] 按鈕。
將
contosotopics/topic1
新增為主題,然後選取 [確認]。 您可將其他欄位保留現有的預設值。選取左側滑軌中的 [client1]。
針對 client1,在訊息撰寫方塊上方,鍵入
contosotopics/topic1
作為要發佈的主題。撰寫訊息。 您可以使用任何格式或 JSON,如下所示。
選取 [Send] \(傳送\) 按鈕。
訊息應該會顯示為在 client1 中發佈。
切換至 client2。 確認 client2 已收到訊息。