1

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

4

1 回答 1

1

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

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

@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();
        }
}
于 2018-06-19T20:41:00.703 回答