教學課程:使用自定義主題將 Azure 事件方格 中的 MQTT 訊息路由至 Azure Functions - Azure 入口網站

在本教學課程中,您將瞭解如何依照下列步驟,透過事件方格自定義主題,將 Azure 事件方格 命名空間所接收的 MQTT 訊息路由傳送至 Azure 函式:

如果您沒有 Azure 訂用帳戶,則可以註冊申請一個免費的試用帳戶

使用事件方格觸發程式建立 Azure 函式

請遵循使用 Visual Studio Code 建立 Azure 函式中的指示,但使用 Azure 事件方格 觸發程式,而不是使用 HTTP 觸發程式。 您應該會看到類似下列範例的程式代碼:

using System;
using Azure.Messaging;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;

namespace Company.Function
{
    public class MyEventGridTriggerFunc
    {
        private readonly ILogger<MyEventGridTriggerFunc> _logger;

        public MyEventGridTriggerFunc(ILogger<MyEventGridTriggerFunc> logger)
        {
            _logger = logger;
        }

        [Function(nameof(MyEventGridTriggerFunc))]
        public void Run([EventGridTrigger] CloudEvent cloudEvent)
        {
            _logger.LogInformation("Event type: {type}, Event subject: {subject}", cloudEvent.Type, cloudEvent.Subject);
        }
    }
}

在本教學課程稍後,您會使用此 Azure 函式作為主題訂用帳戶的事件處理程式。

注意

  • 在相同的區域中建立所有資源。
  • 本教學課程已使用使用 .NET 8.0(隔離)運行時間堆疊的 Azure 函式進行測試。

建立事件方格主題 (自訂主題)

建立事件方格主題。 請參閱 使用入口網站建立自定義主題。 當您建立事件方格主題時,在 [進階] 索引標籤上,針對 [事件架構] 選取 [雲端事件架構 v1.0]。

顯示 [建立主題精靈] 之 [進階] 頁面的螢幕快照。

注意

在本教學課程的任何地方使用 雲端事件架構

使用函式將訂用帳戶新增至主題

在此步驟中,您會使用您稍早建立的 Azure 函式,建立事件方格主題的訂用帳戶。

  1. 在 [事件方格] 主題頁面上,選取 左側導覽列上的 [訂用帳戶 ]。

    顯示主題 [事件訂閱] 頁面的螢幕快照。

  2. 在 [ 建立事件訂用帳戶 ] 頁面上,執行下列步驟:

    1. 輸入事件訂閱的 [名稱]

    2. 針對 [事件架構],選取 [雲端事件架構 1.0]。

    3. 針對 [端點類型],選取 [Azure Functions]。

    4. 然後,選取 [ 設定端點]。

      顯示 [建立事件訂用帳戶] 頁面的螢幕快照。

  3. 在 [ 選取 Azure 函式 ] 頁面上,執行下列步驟:

    1. 針對 [ 訂用帳戶],選取您的 Azure 訂用帳戶

    2. 針對 [ 資源群組],選取具有 Azure 函式的資源群組。

    3. 針對 [ 函式應用程式],選取 具有函式的 Functions 應用程式

    4. 針對 [位置],選取 [生產]。

    5. 針對 [ 函式],選取您的 Azure 函式。

    6. 然後,選取頁面底部的 [ 確認選取 專案]。

      顯示 [選取 Azure 函式] 頁面的螢幕快照。

  4. 在 [建立事件訂閱] 頁面上,選取 [建立]

  5. 在 [ 事件訂閱] 頁面上,您應該會看到您所建立的訂用帳戶。

建立命名空間、用戶端、主題空間和許可權系結

請遵循快速入門:使用事件方格命名空間發佈及訂閱 MQTT 訊息,並搭配 Azure 入口網站

  1. 建立事件方格命名空間。
  2. 建立兩個用戶端。
  3. 建立主題空間。
  4. 建立發行者和訂閱者許可權系結。
  5. 使用 MQTTX 應用程式 進行測試,以確認客戶端能夠傳送和接收訊息。

啟用命名空間的受控識別

在本節中,您會為事件方格命名空間啟用系統指派的受控識別。 然後,將傳送許可權授與您稍早建立的事件方格自定義主題,以便將訊息路由傳送至自定義主題。 您可以在自訂主題上將受控識別新增至 事件方格數據傳送者 角色。

  1. 在 [ 事件方格命名空間] 頁面上,選取 左側導覽功能表上的 [身分 識別]。

    顯示 [事件方格命名空間] 的螢幕快照,其中包含已選取 [身分識別] 索引卷標。

  2. 流覽至 事件方格自定義主題的事件方格主題

  3. 選取 左側導覽列上的 [存取控制 ]。

  4. 在 [ 訪問控制 ] 頁面上,選取 [新增],然後選取 [ 新增角色指派]。

    顯示 [存取控制] 頁面的螢幕快照。

  5. 在 [新增角色指派精靈] 的 [角色] 頁面上,選取 [事件方格數據傳送者] 角色,然後選取頁面底部的 [下一步]。

    顯示 [新增角色指派] 精靈 [角色] 頁面的螢幕快照。

  6. 在 [新增角色指派精靈] 的 [成員] 頁面上,選取 [受控識別],然後選擇 [選取成員]。

    顯示 [新增角色指派精靈] 之 [成員] 頁面的螢幕快照。

  7. 在 [ 選取受控識別 ] 頁面上,執行下列步驟:

    1. 選取您的 Azure 訂用帳戶

    2. 針對 [受控識別],選取 [事件方格命名空間]。

    3. 選取與事件方格命名空間同名的受控識別。

    4. 選擇頁面底部的 [ 選取 ]。

      顯示 [選取受控識別] 頁面的螢幕快照。

  8. 在 [ 新增角色指派 ] 頁面上,選取 頁面底部的 [下一步 ]。

  9. 在 [ 檢閱 + 指派 ] 頁面上檢閱設定,然後選取頁面底部的 [ 檢閱 + 指派 ]。

透過自定義主題設定路由訊息至 Azure 函式

在此步驟中,您會設定事件方格命名空間的路由,讓接收的訊息路由傳送至您所建立的自定義主題。

  1. 在 [ 事件方格命名空間] 頁面上,選取 左側導覽列上的 [路由 ]。

  2. 在 [ 路由 ] 頁面上,選取 [ 啟用路由]。

  3. 針對 [ 主題類型],選取 [ 自定義主題]。

  4. 針對 [ 主題],選取您為此教學課程建立的自定義主題。

  5. 針對 要傳遞的受控識別,選取 [ 系統指派]。

  6. 選取 頁面底部的 [套用 ]。

    顯示命名空間 [路由] 頁面的螢幕快照。

使用 MQTTX 傳送測試 MQTT 訊息

將測試 MQTT 訊息傳送至命名空間,並確認函式會收到它們。

請遵循使用 MQTTX 應用程式發佈、訂閱訊息一文中的指示,將一些測試訊息傳送至事件方格命名空間。

以下是事件或訊息的流程:

  1. MQTTX 會將訊息傳送至事件方格命名空間的主題空間。

  2. 訊息會路由傳送至您設定的自定義主題。

  3. 訊息會轉送至事件訂用帳戶,也就是 Azure 函式。

  4. 使用記錄功能來確認函式已收到事件。

    顯示 Azure 函式之 [記錄數據流] 頁面的螢幕快照。

後續步驟

請參閱此 GitHub 存放庫中的程式代碼範例。