繁体   English   中英

BatchEventProcessor LMAX干扰模式的作用

[英]Role of BatchEventProcessor LMAX Disruptor Pattern

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

BatchEventProcessor<ValueEvent> eventProcessor 

= new BatchEventProcessor(ringBuffer,barrier,handler);

EXECUTOR.execute( eventProcessor );

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM