4

lmax ディスラプター パターンでの BatchEventProcessor の役割は何ですか?

BatchEventProcessor<ValueEvent> eventProcessor 

= new BatchEventProcessor( ringBuffer, バリア, ハンドラ );

EXECUTOR.execute( eventProcessor );
4

2 に答える 2

2

Sam answer からの「イベントのグループを 1 つの大きなメッセージに追加する」というタスクについて話している場合、BatchEventProcessor により、次の 2 つの主なことが可能になります。

  1. イベント シリーズの最後の呼び出しで「endOfBatch==true」を取得するため、「endOfBatch==true」での呼び出しまで一括メッセージ パブリッシュを延期でき、一部のイベントがない状況に陥ることはありません。数分、まだ一度も収集されていないため、この状況をさらに処理する必要があります。
  2. BatchEventProcessor は、バッチからのすべてのメッセージが Handler によって処理された後にのみ、独自の Sequence 値を移動します。現在のバッチの以前のイベントをハンドラーに保持し、それらを使用して大量のメッセージを生成することができます。たとえば、この再利用されたイベントのコンテンツに損傷を与える可能性のあるプロデューサーについては考えないでください。プロデューサーは、ハンドラーが onEvent(, endOfBatch==true) から戻るまで、これらのイベントおよび関連するシーケンスにアクセスできません。
于 2015-09-05T17:40:39.973 に答える