BatchEventProcessor LMAX干扰模式的作用

时间:2013-05-29 23:08:00

标签: java disruptor-pattern

BatchEventProcessor在lmax干扰模式中的作用是什么?

BatchEventProcessor<ValueEvent> eventProcessor 

= new BatchEventProcessor(ringBuffer,barrier,handler);

EXECUTOR.execute( eventProcessor );

2 个答案:

答案 0 :(得分:3)

BatchEventProcessor是eventProcessor的一个实现,它监视每次调用时可用的事件数。然后,它将每个事件的实际处理委派给您的eventHandler,并在批处理的最终事件已传递到您的事件处理程序时发出信号。

这个想法是,如果你想延迟从你的处理程序发布事件,例如将一组事件添加到单个较大的消息中。

答案 1 :(得分:1)

如果我们正在谈论Sam回答“将一组事件添加到一个更大的消息中”的任务,那么BatchEventProcessor使我们可以做两件事:

  1. 我们将在最后一次调用事件系列时获得“endOfBatch == true”,因此我们可以将批量消息发布推迟到“endOfBatch == true”调用,并且我们不会遇到没有的情况几分钟的事件,我们没有收集已经收集的一次,我们还需要处理这种情况。
  2. BatchEventProcessor仅在处理完所有批处理消息后才会移动自己的Sequence值。例如,它可以在我们的处理程序中保存当前批处理的先前事件并使用它们来生成批量消息,您不应该考虑可能会损坏此重用事件内容的生成器。生成器无法访问这些事件和相关序列,直到处理程序从onEvent返回(,endOfBatch == true)