4

私は Azure EventHub のワーカーを作成しており、EventProcessorHostの上に構築することを期待しています。ただし、一般的な ドキュメントまたは API ドキュメントのいずれにも、関連する可能性のある詳細を見つけることができませんでした。

EventProcessorHost によってIEventProcessor ProcessEventsAsyncが呼び出されるのはいつですか?

このメソッドは、Event Hubs ストリームに新しいメッセージがある場合に呼び出されます。各バッチのすべてのイベントの処理が終了したときにのみチェックポイントを設定してください。

列挙可能なメッセージにいくつかの結果があることはわかっていますが、ドキュメントでは、ProcessEventsAsync への同時呼び出しまたは最初の呼び出しの進行中に 2 番目の呼び出しが予想されるかどうかについては言及されていません。最初の呼び出しが完了していないため、2 番目の呼び出しが完了し、ストリーム内で処理されるよりも先にチェックポイントが実行される可能性があるため、チェックポイントのタイミングに関する指示はあまり意味がありませんが、ドキュメントで確認することは素晴らしいことです。

CreateEventProcessor (一意の場合は IEventProcessor)への各呼び出しの出力は、1 つのパーティションの EventProcessorHost によって使用され、 PartitionContext

同様に、CheckpointAsyncへの呼び出しが、呼び出されるProcessEventsAsyncに何らかの影響を与えるかどうかです。後でチェックポイントを許可するべきではありませんが、合理的な選択であることがわかりました。チェックポインティングのメカニズムについて他にいくつか質問がありますが、これについては別の質問で説明します (リンクはこちら)。

CloseAsync呼び出しが行われた後、さらに ProcessEventsAsync 呼び出しが行われますか(そうではないと思いますが、見つかりませんでした)。ProcessEventsAsync から返された Task を未完了で作成しますか?

つまり、前の呼び出しのタスクが完了するまで、特定のプロセッサに対して ProcessEventsAsync が呼び出されないというのが私にとって理にかなっている答えですが、ドキュメントからこれを確認することはできません。

4

1 に答える 1

2

次の情報は検証されていませんが、論理的には次のように機能するはずです-

1) 1 つのパーティション内で ProcessEventAsync を同時に呼び出すことはできません。それ以外の場合、Azure は 1 つのパーティション内のメッセージの順序をどのように保証しますか。2) 各メッセージを非同期に処理する必要がある場合があります。そうしないと、システムは 32 を超えるメッセージを同時に処理できません。(32 のパーティションがあると仮定します)。

于 2014-12-23T08:26:08.617 に答える