【问题标题】:how to push list to lmax disruptor in the eventclass如何将列表推送到事件类中的 lmax 破坏者
【发布时间】:2018-03-28 21:26:54
【问题描述】:

我需要从 mongodb 存储和获取大量数据,所以我要求使用 lmax 中断器接收和存储数据我已经花了几天时间寻找关于 lmax github 帐户的简单教程,但我不太了解如何将我的特殊数据放入 lmax 破坏器机制轮

【问题讨论】:

    标签: java mongodb disruptor-pattern lmax


    【解决方案1】:

    有一个接受对象集合的 ringBuffer.publishEvents(..) 方法。如果您想将整个批次发布到环形缓冲区,可以使用此方法。

    如果你想从一个环形缓冲区(在一个处理程序中)消费一批数据,并用一批向前处理,你可以使用 EventHandler 和 onEvent() 方法的参数“endOfBatch”。此参数是一个标志,它向您显示刷新缓冲区的好时机。我在我的项目中使用这种机制来创建批处理。请看下面的例子:

    @Component
    public class MyHandler implements EventHandler<Event> {
        private List<Event> batchOfEvents = new LinkedList<>();
    
        @Override
        public void onEvent(Event Event, long sequence, boolean endOfBatch) throws Exception {
            // Add message to batch
            batchOfEvents.add(event);
    
            if (endOfBatch && !batchOfEvents.isEmpty()) {
                // Feed your batch to some Mongo DB dao or any other service
                someService.process(batchOfEvents);
                batchOfEvents.clear();
            }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-08-12
      • 2014-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多