你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:使用自定义主题将 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 函数进行测试。

创建事件网格主题(自定义主题)

创建事件网格主题。 请参阅 使用 Azure 门户创建自定义主题。 创建事件网格主题时,在“高级”选项卡上,为“事件架构”选择“云事件架构 v1.0”。

显示“创建主题”向导的“高级”页的屏幕截图。

注释

在本教程的任何地方使用 云事件架构 v1.0

使用函数向主题添加订阅

在此步骤中,使用前面创建的 Azure 函数创建事件网格主题的订阅。

  1. “事件网格主题 ”页上,选择“ 订阅”。

    显示主题的“事件订阅”页的屏幕截图。

  2. “创建事件订阅 ”页上,执行以下步骤:

    1. 为事件订阅输入 名称

    2. 对于 事件架构,请选择 “云事件架构 1.0”。

    3. 对于“终结点类型”,请选择“Azure Function”

    4. 然后选择“ 配置终结点”。

      显示“创建事件订阅”页的屏幕截图。

  3. “选择 Azure 函数 ”页上,执行以下步骤:

    1. 对于“订阅”,请选择你的 Azure 订阅。

    2. 对于 资源组,请选择具有 Azure 函数的资源组。

    3. 对于 函数应用,请选择具有函数的 Functions 应用。

    4. 对于槽,请选择“生产”

    5. 对于“函数”,选择你的 Azure 函数

    6. 然后,选择“确认选择”。

      显示“选择 Azure 函数”页的屏幕截图。

  4. 在“ 创建事件订阅 ”页上,选择“ 创建”。

  5. “事件订阅 ”页上,应会看到创建的订阅。

创建命名空间、客户端、主题空间和权限绑定

按照 快速入门:在 Azure 门户中使用事件网格命名空间发布和订阅 MQTT 消息 中的说明进行操作:

  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 函数的日志流页的屏幕截图。

后续步骤