Azure Functions 的 Azure 事件中心触发器和绑定

本文介绍如何使用 Azure Functions 的 Azure 事件中心绑定。 Azure Functions 支持事件中心的触发器和输出绑定。

操作 类型
响应发送到事件中心事件流的事件。 触发器
将事件写入到事件流 输出绑定

安装扩展

你安装的扩展 NuGet 包取决于你在函数应用中使用的 C# 模式:

函数在与函数主机相同的进程中执行。 若要了解详细信息,请参阅使用 Azure Functions 开发 C# 类库函数

扩展的功能因扩展版本而异:

此版本引入了使用标识而不是机密进行连接的功能。 有关使用托管标识配置函数应用的教程,请参阅使用基于标识的连接创建函数应用教程

此版本使用更新的事件中心绑定类型 Azure.Messaging.EventHubs.EventData

通过安装 NuGet 包版本 5.x 可获得此扩展版本。

安装捆绑包

事件中心扩展是在 host.json 项目文件中指定的扩展捆绑包的一部分。 你可能需要修改此捆绑包以更改事件网格绑定的版本,或者如果尚未安装捆绑包。 若要了解详细信息,请参阅扩展捆绑包

此版本引入了使用标识而不是机密进行连接的功能。 有关使用托管标识配置函数应用的教程,请参阅使用基于标识的连接创建函数应用教程

可以通过在 host.json 文件中添加或替换以下代码,从扩展捆绑包 v3 添加该扩展的这一版本:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[3.3.0, 4.0.0)"
    }
}

若要了解详细信息,请参阅更新扩展

host.json 设置

host.json 文件包含控制事件中心触发器行为的设置。 配置因扩展版本而异。

{
    "version": "2.0",
    "extensions": {
        "eventHubs": {
            "maxEventBatchSize" : 10,
            "batchCheckpointFrequency" : 5,
            "prefetchCount" : 300,
            "transportType" : "amqpWebSockets",
            "webProxy" : "https://proxyserver:8080",
            "customEndpointAddress" : "amqps://company.gateway.local",
            "initialOffsetOptions" : {
                "type" : "fromStart",
                "enqueuedTimeUtc" : ""
            },
            "clientRetryOptions":{
                "mode" : "exponential",
                "tryTimeout" : "00:01:00",
                "delay" : "00:00:00.80",
                "maximumDelay" : "00:01:00",
                "maximumRetries" : 3
            }
        }
    }
}  
属性 默认 说明
maxEventBatchSize 10 单次调用的批中将包含的最大事件数。 必须至少为 1。
batchCheckpointFrequency 1 为事件中心创建检查点之前要处理的批数。
prefetchCount 300 从事件中心请求并在本地缓存中保留以使读取操作可以避免等待网络操作的事件数
transportType amqpTcp 用于与事件中心通信的协议和传输。 可用选项:amqpTcpamqpWebSockets
webProxy 用于通过 Web 套接字与事件中心进行通信的代理。 代理不能与 amqpTcp 传输一起使用。
customEndpointAddress 与事件中心建立连接时要使用的地址,使网络请求可以通过应用程序网关或主机环境所需的其他路径路由。 使用自定义终结点地址时,仍然需要事件中心的完全限定命名空间,并且必须显式指定或通过连接字符串指定。
initialOffsetOptions/type fromStart 当存储中不存在检查点时要在事件流中开始处理事件的位置。 应用于所有分区。 有关详细信息,请参阅 OffsetType 文档。 可用选项:fromStartfromEndfromEnqueuedTime
initialOffsetOptions/enqueuedTimeUtc 指定在事件流中开始处理的事件的排队时间。 如果 initialOffsetOptions/type 配置为 fromEnqueuedTime,则必需此设置。 支持 DateTime.Parse() 支持的任何格式的时间,如 。 为清楚起见,还应指定时区。 如果未指定时区,Functions 将假设是运行函数应用的计算机的本地时区,即在 Azure 上运行时的 UTC。
clientRetryOptions/mode 指数 用于计算重试延迟的方法。 指数模式将根据一个退避策略来重试带延迟的尝试,该策略规定每次尝试都会增加重试前的等待时间。 固定模式将按固定间隔重试,每个延迟的持续时间一致。 可用选项:exponentialfixed
clientRetryOptions/tryTimeout 00:01:00 每次尝试时等待事件中心操作完成的最大持续时间。
clientRetryOptions/delay 00:00:00.80 要在两次重试之间应用的延迟或回退因子。
clientRetryOptions/maximumDelay 00:00:01 允许出现在两次重试之间的最大延迟。
clientRetryOptions/maximumRetries 3 将关联的操作视为失败之前的最大重试次数。

有关 Azure Functions 2.x 及更高版本中的 host.json 参考,请参阅 Azure Functions 的 host.json 参考

后续步骤