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

EventHubBufferedProducerClient.SendEventBatchFailedAsync 事件

定义

对于未能发布到事件中心的任何事件批处理调用,必须在事件排队之前提供此处理程序。 如果此生成者未使用 MaximumConcurrentSends 配置,并且 MaximumConcurrentSendsPerPartition 都设置为 1,则将并发调用处理程序。

通过在此处理程序中调用 EnqueueEventAsync(EventData, EnqueueEventOptions, CancellationToken)EnqueueEventsAsync(IEnumerable<EventData>, EnqueueEventOptions, CancellationToken) 来尝试重新发送事件是安全的。 请务必注意,这样做会将它们放在缓冲区的末尾:不会保留原始顺序。

发布批处理失败后,将等待此处理程序;在处理程序调用返回之前,发布操作不会被视为已完成。 建议不要在处理程序中执行长时间运行的操作,以避免对吞吐量产生负面影响。

不建议从此处理程序调用 CloseAsync(Boolean, CancellationToken)DisposeAsync() ;如果等待这些调用,则这样做可能会导致死锁情况。

public event Func<Azure.Messaging.EventHubs.Producer.SendEventBatchFailedEventArgs,System.Threading.Tasks.Task> SendEventBatchFailedAsync;
member this.SendEventBatchFailedAsync : Func<Azure.Messaging.EventHubs.Producer.SendEventBatchFailedEventArgs, System.Threading.Tasks.Task> 
Public Custom Event SendEventBatchFailedAsync As Func(Of SendEventBatchFailedEventArgs, Task) 

事件类型

例外

如果尝试删除与注册的当前处理程序不匹配的处理程序。

如果尝试在当前注册处理程序时添加处理程序。

注解

如果发布期间发生暂时性故障,则不会立即调用此处理程序;它仅在应用重试策略且所有符合条件的重试已用尽之后调用。 如果发布在重试期间成功,则不会调用此处理程序。

由于应用程序对失败的批处理没有确定性控制,因此建议应用程序设置大量重试次数,并在 中 RetryOptions尝试超时间隔。 这样做将使 EventHubBufferedProducerClient 从暂时性故障中恢复的机会更高。 当确保需要事件的顺序时,这一点尤其重要。

无需显式注销此处理程序;调用 或 DisposeAsync()CloseAsync(Boolean, CancellationToken),将自动取消注册。

适用于

另请参阅