你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
EventProcessorClient 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
允许在特定使用者组范围内跨给定事件中心的所有分区使用和处理事件。 处理器能够与同一事件中心和使用者组配对的其他实例协作,通过使用通用存储平台进行通信来共享工作。 容错也是内置的,允许处理器在遇到错误时具有复原能力。
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) 将确保正确清理网络资源和其他非托管对象。
构造函数
属性
ConsumerGroup |
与此事件处理程序关联的使用者组的名称。 事件在此组的上下文中是只读的。 |
EventHubName |
处理器连接到的事件中心的名称,特定于包含它的事件中心命名空间。 |
FullyQualifiedNamespace |
与处理器关联的完全限定的事件中心命名空间。 这可能类似于 |
Identifier |
用于标识此事件处理程序的唯一名称。 |
IsRunning |
指示此事件处理程序当前是否正在运行。 |
RetryPolicy |
控制处理器重试尝试的活动策略。 (继承自 EventProcessor<TPartition>) |
方法
事件
PartitionClosingAsync |
执行分区处理停止时所需的任务。 当分区由另一个事件处理程序实例声明或当前事件处理程序实例关闭时,通常会发生这种情况。 不建议直接从此方法中管理处理器的状态;请求启动或停止处理器可能会导致死锁情况,尤其是在使用调用的同步形式时。 |
PartitionInitializingAsync |
执行初始化分区及其关联上下文以用于事件处理的任务。 不建议直接从此方法中管理处理器的状态;请求启动或停止处理器可能会导致死锁情况,尤其是在使用调用的同步形式时。 |
ProcessErrorAsync |
在事件处理程序基础结构的操作中发生意外异常时,执行所需的任务。 实现是强制性的。 当自身中 EventProcessorClient 观察到异常时,将调用此错误处理程序;对于已实现以处理事件或执行开发人员代码的其他事件处理程序和扩展点的代码中的异常,不会调用此错误处理程序。 EventProcessorClient将尽一切努力从异常中恢复并继续处理。 如果遇到无法从中恢复的异常,处理器将尝试丧失其正在处理的所有分区的所有权,以便可以重新分发工作。 此方法出现的异常可能是致命的,也可能是非致命的;由于处理器可能无法准确预测异常是致命的还是其状态是否已损坏,因此此方法负责确定是应终止还是重启处理。 如果需要,可以通过调用 StopProcessingAsync(CancellationToken) 和/或 StartProcessingAsync(CancellationToken)安全地执行此操作。 对于生产方案,建议通过考虑此错误处理程序的观察结果、初始化分区处理时调用的方法以及停止对分区的处理时调用的方法来做出决策。 许多开发人员还将在此决策中包含来自其监视平台的数据。 与事件处理一样,如果错误处理程序的代码中出现异常,则事件处理程序将允许它冒泡,并且不会尝试以任何方式处理它。 强烈建议开发人员将异常方案考虑在内,并根据需要使用 try/catch 块和其他手段来防范它们。 |
ProcessEventAsync |
在从事件中心服务读取事件时,执行处理给定分区的一批事件所需的任务。 实现是强制性的。 如果此方法的代码中发生异常,事件处理程序将允许它向上传播堆栈,而无需尝试以任何方式处理堆栈。 在大多数主机上,这会使负责分区处理的任务出错,从而导致它从最后一个检查点重新启动。 在某些主机上,它可能会导致进程崩溃。 强烈建议开发人员考虑所有异常方案,并根据需要使用 try/catch 块和其他手段来防范它们。 不建议直接从此处理程序内部管理处理器的状态;请求启动或停止处理器可能会导致死锁情况,尤其是在使用调用的同步形式时。 |