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

EventProcessor<TPartition>.OnProcessingEventBatchAsync 方法

定义

从事件中心服务读取事件时,执行处理给定分区的一批事件所需的任务。

protected abstract System.Threading.Tasks.Task OnProcessingEventBatchAsync (System.Collections.Generic.IEnumerable<Azure.Messaging.EventHubs.EventData> events, TPartition partition, System.Threading.CancellationToken cancellationToken);
abstract member OnProcessingEventBatchAsync : seq<Azure.Messaging.EventHubs.EventData> * 'Partition * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Protected MustOverride Function OnProcessingEventBatchAsync (events As IEnumerable(Of EventData), partition As TPartition, cancellationToken As CancellationToken) As Task

参数

events
IEnumerable<EventData>

要处理的事件批。

partition
TPartition

从中读取事件的分区的上下文。

cancellationToken
CancellationToken

一个 CancellationToken 实例,用于向请求发出取消处理信号。 当处理器关闭时,最有可能发生这种情况。

返回

注解

批处理中的 events 事件数可能会有所不同。 该批将包含一些介于零和创建处理器时请求的批大小之间的事件,具体取决于请求的间隔内 MaximumWaitTime 分区中事件的可用性。

当事件在预提取队列中可用时,它们将用于尽快形成批处理,而无需等待从事件中心分区读取其他事件。 如果预提取中没有可用的事件,处理器将等待至少一个事件可用或请求 MaximumWaitTime 的已过。

如果 MaximumWaitTimenull,则事件处理器将继续从事件中心分区读取,直到可以形成包含至少一个事件的批处理,并且不会将任何空批调度到此方法。

此方法将并发调用,限制为每个分区调用一次。 处理器将等待每次调用,以确保按从分区读取事件的顺序处理来自同一分区的事件。 对此处理程序的调用没有时间限制;处理器将无限期等待执行完成,然后为关联的分区调度另一个事件。 实现可以安全地执行长时间运行的操作、重试、延迟和死信活动。

如果此方法的代码中发生异常,事件处理器将允许它向上传播堆栈,而无需尝试以任何方式处理它。 在大多数主机上,这会使负责分区处理的任务出错,从而导致它从最后一个检查点重新启动。 在某些主机上,它可能会导致进程崩溃。 强烈建议开发人员考虑所有异常情况,并根据需要使用 try/catch 块和其他方法防范这些异常情况。

不建议直接从此方法中管理处理器的状态;请求启动或停止处理器可能会导致死锁情况,尤其是在使用同步形式的调用时。

适用于