【问题标题】:Role of BatchEventProcessor LMAX Disruptor PatternBatchEventProcessor LMAX Disruptor Pattern 的作用
【发布时间】:2013-05-29 23:07:59
【问题描述】:

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

BatchEventProcessor<ValueEvent> eventProcessor 

= new BatchEventProcessor(ringBuffer, barrier, handler);

EXECUTOR.execute( eventProcessor );

【问题讨论】:

    标签: java disruptor-pattern


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2013-12-21
        • 2013-11-23
        • 1970-01-01
        • 1970-01-01
        • 2012-05-07
        • 1970-01-01
        • 1970-01-01
        • 2013-05-28
        • 2018-09-02
        相关资源
        最近更新 更多