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

EventProcessorClient 类

定义

允许在特定使用者组范围内跨给定事件中心的所有分区使用和处理事件。  处理器能够与同一事件中心和使用者组配对的其他实例协作,通过使用通用存储平台进行通信来共享工作。  容错也是内置的,允许处理器在遇到错误时具有复原能力。

public class EventProcessorClient : Azure.Messaging.EventHubs.Primitives.EventProcessor<Azure.Messaging.EventHubs.Primitives.EventProcessorPartition>
type EventProcessorClient = class
    inherit EventProcessor<EventProcessorPartition>
Public Class EventProcessorClient
Inherits EventProcessor(Of EventProcessorPartition)
继承

注解

为了在实例之间 EventProcessorClient 实现分区共享的协调,它们将断言对使用者组的分区的独占读取访问权限。 除打算协作的处理器之外,其他读者不应在使用者组中处于活动状态。 非独占读取者将被拒绝访问;独占读取器(包括使用不同存储位置的处理器)将干扰处理器的操作和性能。

EventProcessorClient在应用程序的生存期内可以安全地缓存和使用 ,当应用程序定期或半定期处理事件时,这是最佳做法。 处理器负责确保高效使用网络、CPU 和内存。 StopProcessingAsync(CancellationToken)在处理完成或关闭应用程序时调用 或 StopProcessing(CancellationToken) 将确保正确清理网络资源和其他非托管对象。

构造函数

EventProcessorClient()

初始化 EventProcessorClient 类的新实例。

EventProcessorClient(BlobContainerClient, String, String)

初始化 EventProcessorClient 类的新实例。

EventProcessorClient(BlobContainerClient, String, String, EventProcessorClientOptions)

初始化 EventProcessorClient 类的新实例。

EventProcessorClient(BlobContainerClient, String, String, String)

初始化 EventProcessorClient 类的新实例。

EventProcessorClient(BlobContainerClient, String, String, String, AzureNamedKeyCredential, EventProcessorClientOptions)

初始化 EventProcessorClient 类的新实例。

EventProcessorClient(BlobContainerClient, String, String, String, AzureSasCredential, EventProcessorClientOptions)

初始化 EventProcessorClient 类的新实例。

EventProcessorClient(BlobContainerClient, String, String, String, EventProcessorClientOptions)

初始化 EventProcessorClient 类的新实例。

EventProcessorClient(BlobContainerClient, String, String, String, TokenCredential, EventProcessorClientOptions)

初始化 EventProcessorClient 类的新实例。

属性

ConsumerGroup

与此事件处理程序关联的使用者组的名称。 事件在此组的上下文中是只读的。

EventHubName

处理器连接到的事件中心的名称,特定于包含它的事件中心命名空间。

FullyQualifiedNamespace

与处理器关联的完全限定的事件中心命名空间。 这可能类似于 {yournamespace}.servicebus.windows.net

Identifier

用于标识此事件处理程序的唯一名称。

IsRunning

指示此事件处理程序当前是否正在运行。

RetryPolicy

控制处理器重试尝试的活动策略。

(继承自 EventProcessor<TPartition>)

方法

ClaimOwnershipAsync(IEnumerable<EventProcessorPartitionOwnership>, CancellationToken)

尝试声明要处理的指定分区的所有权。 此方法由负载均衡使用,允许事件处理程序实例分配处理给定事件中心和使用者组配对的分区的责任,并将其分配给活动事件处理程序。

CreateConnection()

EventHubConnection创建用于与事件中心服务通信的 。

GetCheckpointAsync(String, CancellationToken)

返回事件中心、使用者组以及与事件处理程序实例关联的分区 ID 的检查点,以便可以正确初始化给定分区的处理。

ListOwnershipAsync(CancellationToken)

为给定事件中心和使用者组配对的每个协作事件处理程序实例之间生成分区的所有权分配列表。 在进行负载均衡时,此方法用于允许处理器发现其他活动协作者,并决定如何最好地平衡它们之间的工作。

ListPartitionIdsAsync(EventHubConnection, CancellationToken)

查询事件中心分区的标识符。

(继承自 EventProcessor<TPartition>)
OnInitializingPartitionAsync(EventProcessorPartition, CancellationToken)

执行初始化分区及其关联上下文以用于事件处理的任务。

OnInitializingPartitionAsync(TPartition, CancellationToken)

执行初始化分区及其关联上下文以用于事件处理的任务。

(继承自 EventProcessor<TPartition>)
OnPartitionProcessingStoppedAsync(EventProcessorPartition, ProcessingStoppedReason, CancellationToken)

执行分区处理停止时所需的任务。 当分区由另一个事件处理程序实例声明或当前事件处理程序实例关闭时,通常会发生这种情况。

OnPartitionProcessingStoppedAsync(TPartition, ProcessingStoppedReason, CancellationToken)

执行分区处理停止时所需的任务。 当分区由另一个事件处理程序实例声明或当前事件处理程序实例关闭时,通常会发生这种情况。

(继承自 EventProcessor<TPartition>)
OnProcessingErrorAsync(Exception, EventProcessorPartition, String, CancellationToken)

在事件处理程序基础结构的操作中发生意外异常时,执行所需的任务。

OnProcessingErrorAsync(Exception, TPartition, String, CancellationToken)

在事件处理程序基础结构的操作中发生意外异常时,执行所需的任务。

(继承自 EventProcessor<TPartition>)
OnProcessingEventBatchAsync(IEnumerable<EventData>, EventProcessorPartition, CancellationToken)

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

OnProcessingEventBatchAsync(IEnumerable<EventData>, TPartition, CancellationToken)

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

(继承自 EventProcessor<TPartition>)
ReadLastEnqueuedEventProperties(String)

一组有关分区的最后一个排队事件的信息,与与此上下文关联的 EventHubs 客户端观察到,事件从事件中心服务接收。 仅当使用 set 创建 TrackLastEnqueuedEventProperties 使用者时,这才可用。

(继承自 EventProcessor<TPartition>)
StartProcessing(CancellationToken)

EventProcessorClient 发出信号以开始处理事件。 如果在处理器运行时调用此方法,则不执行任何操作。

StartProcessingAsync(CancellationToken)

EventProcessorClient 发出信号以开始处理事件。 如果在处理器运行时调用此方法,则不执行任何操作。

StopProcessing(CancellationToken)

指示 EventProcessorClient 停止处理事件。 如果在处理器未运行时调用此方法,则不执行任何操作。

StopProcessingAsync(CancellationToken)

指示 EventProcessorClient 停止处理事件。 如果在处理器未运行时调用此方法,则不执行任何操作。

UpdateCheckpointAsync(String, Int64, Nullable<Int64>, CancellationToken)

创建或更新特定分区的检查点,标识处理器应从该分区的事件流中读取的位置。

ValidateProcessingPreconditions(CancellationToken)

执行验证处理器正常运行所需的依赖项的基本配置和权限所需的任务。

事件

PartitionClosingAsync

执行分区处理停止时所需的任务。 当分区由另一个事件处理程序实例声明或当前事件处理程序实例关闭时,通常会发生这种情况。

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

PartitionInitializingAsync

执行初始化分区及其关联上下文以用于事件处理的任务。

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

ProcessErrorAsync

在事件处理程序基础结构的操作中发生意外异常时,执行所需的任务。 实现是强制性的。

当自身中 EventProcessorClient 观察到异常时,将调用此错误处理程序;对于已实现以处理事件或执行开发人员代码的其他事件处理程序和扩展点的代码中的异常,不会调用此错误处理程序。 EventProcessorClient将尽一切努力从异常中恢复并继续处理。 如果遇到无法从中恢复的异常,处理器将尝试丧失其正在处理的所有分区的所有权,以便可以重新分发工作。

此方法出现的异常可能是致命的,也可能是非致命的;由于处理器可能无法准确预测异常是致命的还是其状态是否已损坏,因此此方法负责确定是应终止还是重启处理。 如果需要,可以通过调用 StopProcessingAsync(CancellationToken) 和/或 StartProcessingAsync(CancellationToken)安全地执行此操作。

对于生产方案,建议通过考虑此错误处理程序的观察结果、初始化分区处理时调用的方法以及停止对分区的处理时调用的方法来做出决策。 许多开发人员还将在此决策中包含来自其监视平台的数据。

与事件处理一样,如果错误处理程序的代码中出现异常,则事件处理程序将允许它冒泡,并且不会尝试以任何方式处理它。 强烈建议开发人员将异常方案考虑在内,并根据需要使用 try/catch 块和其他手段来防范它们。

ProcessEventAsync

在从事件中心服务读取事件时,执行处理给定分区的一批事件所需的任务。 实现是强制性的。

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

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

适用于