如何将列表推送到事件类中的 lmax disruptor
how to push list to lmax disruptor in the eventclass
我需要从 mongodb 存储和获取大量数据,所以我被要求使用 lmax disruptor 接收和存储数据 我已经过了几天寻找关于 lmax github 帐户的简单教程, 但我不太明白如何将我的特殊数据放入 lmax disruptor mechanism wheel
有一个 ringBuffer.publishEvents(..) 方法可以接受对象集合。如果要将整个批次发布到环形缓冲区,可以使用此方法。
如果你想从环形缓冲区(在处理程序中)消费一批数据,并使用一批向前处理,你可以使用带有 onEvent() 方法参数的 EventHandler '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();
}
}
我需要从 mongodb 存储和获取大量数据,所以我被要求使用 lmax disruptor 接收和存储数据 我已经过了几天寻找关于 lmax github 帐户的简单教程, 但我不太明白如何将我的特殊数据放入 lmax disruptor mechanism wheel
有一个 ringBuffer.publishEvents(..) 方法可以接受对象集合。如果要将整个批次发布到环形缓冲区,可以使用此方法。
如果你想从环形缓冲区(在处理程序中)消费一批数据,并使用一批向前处理,你可以使用带有 onEvent() 方法参数的 EventHandler '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();
}
}