你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
EventHubBufferedProducerClient 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
负责将 实例 EventData 发布到特定事件中心的客户端。 根据事件排队时指定的选项,它们可能会自动分配给分区、根据指定的分区键进行分组或分配专门请求的分区。
EventHubBufferedProducerClient不会立即发布,而是使用延迟模型,其中将事件收集到缓冲区中,以便在批处理已满或MaximumWaitTime已过且未排队新事件时有效地批处理和发布它们。
此模型旨在将批处理管理的负担从调用方转移,代价是非确定性计时,以用于发布事件的时间。 此外,还需要考虑其他权衡:
- 如果应用程序崩溃,则缓冲区中的事件将不会发布。 为了防止数据丢失,建议调用方使用 SendEventBatchSucceededAsync 和 SendEventBatchFailedAsync 处理程序跟踪发布进度。
- 为指定分区键的事件分配的分区可能不同于与其他生成者使用同一键的事件。
- 如果分区暂时不可用, EventHubBufferedProducerClient 则 恢复所需的时间可能比其他生成者长。
如果必须立即发布具有确定性结果的事件,请确保将分区键分配给与其他发布者一致的分区,或者需要最大化可用性,建议使用 EventHubProducerClient 。
public class EventHubBufferedProducerClient : IAsyncDisposable
type EventHubBufferedProducerClient = class
interface IAsyncDisposable
Public Class EventHubBufferedProducerClient
Implements IAsyncDisposable
- 继承
-
EventHubBufferedProducerClient
- 实现
注解
在应用程序的生存期内,可以 EventHubBufferedProducerClient 安全地缓存和用作单一实例,这是建议的方法。 生成者负责确保高效使用网络、CPU 和内存。 CloseAsync(Boolean, CancellationToken)当不再有事件排队或关闭应用程序时,需要调用 或 DisposeAsync() ,以便可以刷新缓冲区并正确清理资源。
构造函数
属性
EventHubName |
此生成者连接到的事件中心的名称,特定于包含它的事件中心命名空间。 |
FullyQualifiedNamespace |
此生成者当前与之关联的完全限定的事件中心命名空间,可能类似于 |
Identifier |
用于标识缓冲生成者的唯一名称。 |
IsClosed |
指示是否已关闭。EventHubBufferedProducerClient |
IsPublishing |
指示当前是否处于活动状态 EventHubBufferedProducerClient ,并发布排队事件。 |
TotalBufferedEventCount |
所有分区中当前缓冲并等待发布的事件总数。 |
方法
事件
SendEventBatchFailedAsync |
对于未能发布到事件中心的任何事件批处理调用,必须在事件排队之前提供此处理程序。 如果此生成者未使用 MaximumConcurrentSends 配置并且 MaximumConcurrentSendsPerPartition 都设置为 1,则将并发调用处理程序。 通过在此处理程序中调用 EnqueueEventAsync(EventData, EnqueueEventOptions, CancellationToken) 或 EnqueueEventsAsync(IEnumerable<EventData>, EnqueueEventOptions, CancellationToken) 来尝试重新发送事件是安全的。 请务必注意,这样做会将它们放在缓冲区的末尾:不会保留原始顺序。 发布批处理失败后,将等待此处理程序;在处理程序调用返回之前,发布操作不会被视为已完成。 建议不要在处理程序中执行长时间运行的操作,以避免对吞吐量产生负面影响。 不建议从此处理程序调用 CloseAsync(Boolean, CancellationToken) 或 DisposeAsync() ;如果等待这些调用,则这样做可能会导致死锁情况。 |
SendEventBatchSucceededAsync |
在每批事件成功发布到事件中心后调用,此处理程序是可选的,旨在为感兴趣的侦听器提供通知。 如果此生成者已配置 MaximumConcurrentSends 或 MaximumConcurrentSendsPerPartition 设置为大于 1,则将并发调用处理程序。 发布批处理后,将等待此处理程序;在处理程序调用返回之前,发布操作不会被视为已完成。 建议不要在处理程序中执行长时间运行的操作,以避免对吞吐量产生负面影响。 不建议从此处理程序调用 CloseAsync(Boolean, CancellationToken) 或 DisposeAsync() ;如果等待这些调用,则这样做可能会导致死锁情况。 |