我需要从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();
}
}