我需要从mongodb中存储和获取大量数据,所以我要求使用lmax干扰器来接收和存储数据。我已经过去了几天,一直在寻找有关lmax github帐户的简单教程,但是我不太了解如何放置我的特殊代码lmax干扰器轮内部的数据

最佳答案

有一个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();
        }
}

09-27 11:20