你当前正在访问 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 函数进行测试。
创建事件网格主题(自定义主题)
创建事件网格主题。 请参阅使用门户创建自定义主题。 创建事件网格主题时,在“高级”选项卡上,对于事件架构,请选择“云事件架构 v1.0”。
注意
在本教程中,随处使用云事件架构。
使用函数向主题添加订阅
在此步骤中,使用前面创建的 Azure 函数创建事件网格主题的订阅。
在“事件网格”主题页上,选择左侧导航栏上的“订阅”。
在“创建事件订阅”页中执行以下步骤:
在“选择 Azure 函数”页上执行以下步骤:
在“创建事件订阅”页上,选择“创建”。
在“事件订阅”页上,应会看到创建的订阅。
创建命名空间、客户端、主题空间和权限绑定
按照快速入门:在 Azure 门户中使用事件网格命名空间发布和订阅 MQTT 消息的说明操作:
- 创建事件网格命名空间。
- 创建两个客户端。
- 创建主题空间。
- 创建发布者和订阅者权限绑定。
- 使用 MQTTX 应用进行测试,以确认客户端能够发送和接收消息。
为命名空间启用托管标识
在本部分中,将在事件网格命名空间上启用系统分配的托管标识。 然后,授予标识向之前创建的事件网格自定义主题发送的权限,以便它可以将消息路由到自定义主题。 为此,可将托管标识添加到自定义主题上的事件网格数据发送方角色。
在“事件网格命名空间”页中,在左侧导航菜单上选择“标识”。
导航到事件网格自定义主题的事件网格主题。
选择左侧导航栏中的“访问控制”。
在“访问控制”页上选择“添加”,然后选择“添加角色分配”。
在“添加角色分配”向导的“角色”页上,选择事件网格数据发送方角色,然后选择页面底部的“下一步”。
在“添加角色分配”向导的“成员”页,选择“托管标识”,然后选择“选择成员”。
在“选择托管标识”页上,执行以下步骤:
在“添加角色分配”页面中,在页面底部选择“下一步”。
在“审阅 + 分配”页,查看设置,然后选择页面底部的“审阅 + 分配”。
通过自定义主题将路由消息配置到 Azure 函数
在此步骤中,将配置事件网格命名空间的路由,以便接收的消息路由到所创建的自定义主题。
在“事件网格命名空间”页中,在左侧导航栏上选择“路由”。
在“路由”页上,选择“启用路由”。
对于主题类型,选择“自定义主题”。
对于主题,请选择为本教程创建的自定义主题。
对于交付的托管标识,选择“系统分配”。
在页面底部,选择“应用”。
使用 MQTTX 发送测试 MQTT 消息
将测试 MQTT 消息发送到命名空间,并确认函数接收它们。
按照使用 MQTTX 应用发布、订阅消息文章中的说明,将一些测试消息发送到事件网格命名空间。
下面是事件或消息的流:
下一步
请参阅此 GitHub 存储库的代码示例。