次の方法で共有


EventProcessor<TPartition>.OnProcessingEventBatchAsync メソッド

定義

Event Hubs サービスから読み取られた特定のパーティションのイベントのバッチを処理するために必要なタスクを実行します。

protected abstract System.Threading.Tasks.Task OnProcessingEventBatchAsync (System.Collections.Generic.IEnumerable<Azure.Messaging.EventHubs.EventData> events, TPartition partition, System.Threading.CancellationToken cancellationToken);
abstract member OnProcessingEventBatchAsync : seq<Azure.Messaging.EventHubs.EventData> * 'Partition * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Protected MustOverride Function OnProcessingEventBatchAsync (events As IEnumerable(Of EventData), partition As TPartition, cancellationToken As CancellationToken) As Task

パラメーター

events
IEnumerable<EventData>

処理されるイベントのバッチ。

partition
TPartition

イベントの読み取り元のパーティションのコンテキスト。

cancellationToken
CancellationToken

CancellationToken処理を取り消す要求を通知するインスタンス。 これは、プロセッサのシャットダウン時に発生する可能性が最も高くなります。

戻り値

注釈

バッチ内 events のイベントの数は異なる場合があります。 バッチには、要求された間隔内のパーティション内のイベントの可用性に応じて、プロセッサの作成時に要求された 0 からバッチ サイズまでの多数のイベントが MaximumWaitTime 含まれます。

プリフェッチ キューでイベントを使用できる場合、イベント ハブ パーティションからの追加のイベントが読み取られるのを待たずに、できるだけ迅速にバッチを形成するために使用されます。 プリフェッチで使用可能なイベントがない場合、プロセッサは、少なくとも 1 つのイベントが使用可能であるか、要求された MaximumWaitTime が経過するまで待機します。

nullの場合MaximumWaitTime、イベント プロセッサは、少なくとも 1 つのイベントを含むバッチが形成され、このメソッドに空のバッチをディスパッチしないまで、イベント ハブ パーティションからの読み取りを続行します。

このメソッドは同時に呼び出され、パーティションごとに 1 つの呼び出しに制限されます。 プロセッサは、各呼び出しを待機して、同じパーティションからのイベントがパーティションから読み取られた順序で確実に処理されるようにします。 このハンドラーの呼び出しに制限時間は適用されません。プロセッサは、関連付けられたパーティションに対して別のイベントをディスパッチする前に、実行が完了するまで無期限に待機します。 実装では、実行時間の長い操作、再試行、遅延、および配信不能アクティビティを実行しても安全です。

このメソッドのコード内で例外が発生した場合、イベント プロセッサは、何らかの方法で処理を試みることなく、スタックを伝達できるようにします。 ほとんどのホストでは、パーティション処理を担当するタスクがエラーになり、最後のチェックポイントから再起動されます。 一部のホストでは、プロセスがクラッシュする可能性があります。 開発者は、すべての例外シナリオを考慮し、必要に応じて try/catch ブロックやその他の方法を使用してそれらに対して保護することを強くお勧めします。

プロセッサの状態は、このメソッド内から直接管理することはお勧めしません。プロセッサの起動または停止を要求すると、特に呼び出しの同期形式を使用している場合にデッドロック シナリオが発生する可能性があります。

適用対象