4

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

BatchEventProcessor<ValueEvent> eventProcessor 

= new BatchEventProcessor(ringBuffer,屏障,处理程序);

EXECUTOR.execute( eventProcessor );
4

2 回答 2

3

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

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

于 2013-06-23T17:58:47.947 回答
2

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

  1. 我们将在事件系列的最后一次调用中获得“endOfBatch==true”,因此我们可以将批量消息发布推迟到使用“endOfBatch==true”进行调用,并且我们不会陷入某些没有事件的情况分钟,我们没有发送已经收集一次,我们需要额外处理这种情况。
  2. 只有在来自批处理的所有消息都由 Handler 处理后,BatchEventProcessor 才会移动它自己的序列值。例如,它可以在我们的处理程序中保存当前批次的先前事件并使用它们来生成批量消息,并且您不应该考虑生产者,这可能会损坏此重用事件的内容。在处理程序从 onEvent(, endOfBatch==true) 返回之前,生产者无法访问这些事件和相关序列
于 2015-09-05T17:40:39.973 回答