EventHubBufferedProducerClient.SendEventBatchFailedAsync イベント

定義

イベント ハブに発行できなかったイベントのバッチに対して呼び出されます。イベントをエンキューする前に、このハンドラーを指定する必要があります。 このプロデューサーが で MaximumConcurrentSends 構成されておらず、 MaximumConcurrentSendsPerPartition 両方とも 1 に設定されている場合、ハンドラーは同時に呼び出されます。

このハンドラー内から または EnqueueEventsAsync(IEnumerable<EventData>, EnqueueEventOptions, CancellationToken) を呼び出EnqueueEventAsync(EventData, EnqueueEventOptions, CancellationToken)して、イベントの再送信を試しても安全です。 これを行うと、バッファーの末尾に配置されることに注意することが重要です。元の注文は維持されません。

このハンドラーは、バッチの発行に失敗した後に待機されます。発行操作は、ハンドラー呼び出しが返されるまで完了とは見なされません。 スループットに悪影響を与えないように、ハンドラーで実行時間の長い操作を実行しないことをお勧めします。

このハンドラーから または DisposeAsync() を呼び出すのはお勧めしません。呼び出CloseAsync(Boolean, CancellationToken)しが待機されている場合は、デッドロック シナリオが発生する可能性があります。

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)、自動的に登録解除されます。

適用対象

こちらもご覧ください