【发布时间】:2018-03-28 21:26:54
【问题描述】:
我需要从 mongodb 存储和获取大量数据,所以我要求使用 lmax 中断器接收和存储数据我已经花了几天时间寻找关于 lmax github 帐户的简单教程,但我不太了解如何将我的特殊数据放入 lmax 破坏器机制轮
【问题讨论】:
标签: java mongodb disruptor-pattern lmax
我需要从 mongodb 存储和获取大量数据,所以我要求使用 lmax 中断器接收和存储数据我已经花了几天时间寻找关于 lmax github 帐户的简单教程,但我不太了解如何将我的特殊数据放入 lmax 破坏器机制轮
【问题讨论】:
标签: java mongodb disruptor-pattern 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();
}
}
【讨论】: