将函数用作事件网格事件的事件处理程序

事件处理程序是 Azure 事件网格 发送事件进行处理的目的地。 Azure 会自动配置多个服务来处理事件,Azure Functions 就是其中之一。

当你把函数用作事件处理程序时,你会针对每个事件运行自定义代码,而无需配置或管理服务器。

本文介绍了使用函数作为事件处理器的两种方法,并解释了应采用哪种方法。

若要使用 Azure 中的函数作为事件的处理程序,请遵循以下一种方法:

  • 使用 事件网格触发器。 将 Azure Function 指定为 终结点类型。 然后指定函数应用和处理事件的函数。
  • 使用 HTTP触发器。 将 Web Hook 指定为 端点类型。 然后指定处理事件的函数的URL。

使用第一种方法(事件网格触发器)。 它相较于第二种方法具有以下优势:

  • 事件网格会自动验证事件网格触发器。 使用通用 HTTP 触发器时,必须自行实现验证响应
  • 事件网格会根据其判断的该函数处理事件的速率,自动调整向由事件网格事件触发的函数传送事件的速率。 该速率匹配功能避免了因函数无法处理事件而导致的传递错误,因为该函数的事件处理速率会随时间变化。 若要在高吞吐量下提高效率,请在事件订阅上启用批处理。 有关详细信息,请参阅启用批处理

注意

  • 当你使用事件网格触发器通过 Azure 函数添加事件订阅时,事件网格会通过事件网格服务主体的凭证获取目标函数的访问密钥。 当你在Azure订阅中注册事件网格资源提供者时,事件网格会获得权限。
  • 如果你用 Microsoft Entra ID 应用保护 Azure 函数,必须采用通用的 webhook 方法,即使用 HTTP 触发器。 添加订阅时,使用 Azure 函数终结点作为 Webhook URL。

教程

标题 说明
快速入门:使用函数处理事件 将自定义事件发送到函数进行处理。
教程:将大数据流式传输到数据仓库 当事件中心创建捕获文件时,事件网格会将一个事件发送到函数应用。 应用会检索捕获文件并将数据迁移到数据仓库。
教程:Azure 服务总线到 Azure 事件网格集成示例 Event Grid 从服务总线主题向函数应用和逻辑应用发送消息。

REST API 示例

以下示例展示了 PUT 操作的请求体,该操作创建了以 Azure 函数作为事件处理程序的事件订阅。 它设置目标函数的资源 ID,并启用批处理。

{
    "properties":
    {
        "destination":
        {
            "endpointType": "AzureFunction",
            "properties":
            {
                "resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.Web/sites/<FUNCTION APP NAME>/functions/<FUNCTION NAME>",
                "maxEventsPerBatch": 10,
                "preferredBatchSizeInKilobytes": 64
            }
        },
        "eventDeliverySchema": "EventGridSchema"
    }
}

启用批处理

为了提高吞吐量,可以在订阅中启用批处理。 如果你使用Azure门户,可以在创建订阅或之后设置每批最大事件和首选批处理大小(千字节)。

通过使用 Azure 门户、PowerShell、CLI 或 资源管理器 模板配置批处理设置。

Azure 门户

在门户创建订阅时,在 创建事件订阅 页面,切换到 高级功能 标签页,设置 每批最大事件 数和 首选批次大小(千字节)。

创建事件订阅页面高级功能标签的截图,显示批量设置。

事件网格主题页面的“功能”标签页中更新现有订阅的这些值。

事件网格主题页面功能标签页的截图,显示了现有订阅的批量设置。

Azure 资源管理器 模板

在 Azure 资源管理器 模板中设置 maxEventsPerBatchpreferredBatchSizeInKilobytes。 有关详细信息,请参阅 Microsoft.EventGrid eventSubscriptions 模板参考

Azure CLI

使用 az eventgrid event-subscription create 命令,并使用以下参数配置与批处理相关的设置:--max-events-per-batch--preferred-batch-size-in-kilobytes

Azure PowerShell

使用 New-AzEventGridSubscriptionUpdate-AzEventGridSubscription cmdlet 来配置与批处理相关的设置。 使用 -MaxEventsPerBatch 或参数 -PreferredBatchSizeInKiloBytes 来设置你的偏好。

有关支持的事件处理程序列表,请参见 事件处理程序 条目。