你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
EventProcessor<TPartition>.OnProcessingEventBatchAsync 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
从事件中心服务读取事件时,执行处理给定分区的一批事件所需的任务。
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 的已过。
如果 MaximumWaitTime 为 null
,则事件处理器将继续从事件中心分区读取,直到可以形成包含至少一个事件的批处理,并且不会将任何空批调度到此方法。
此方法将并发调用,限制为每个分区调用一次。 处理器将等待每次调用,以确保按从分区读取事件的顺序处理来自同一分区的事件。 对此处理程序的调用没有时间限制;处理器将无限期等待执行完成,然后为关联的分区调度另一个事件。 实现可以安全地执行长时间运行的操作、重试、延迟和死信活动。
如果此方法的代码中发生异常,事件处理器将允许它向上传播堆栈,而无需尝试以任何方式处理它。 在大多数主机上,这会使负责分区处理的任务出错,从而导致它从最后一个检查点重新启动。 在某些主机上,它可能会导致进程崩溃。 强烈建议开发人员考虑所有异常情况,并根据需要使用 try/catch 块和其他方法防范这些异常情况。
不建议直接从此方法中管理处理器的状态;请求启动或停止处理器可能会导致死锁情况,尤其是在使用同步形式的调用时。