(LMAX disruptor)如何自己获取数据而不是回调?

时间:2015-01-21 11:22:49

标签: java lmax

我了解到LMAX disruptor是一个高性能的线程间消息传递库。 但是当我尝试使用它时,我发现eventhandler使用回调方法来处理数据。

void onEvent(T event,
       long sequence,
       boolean endOfBatch)
         throws java.lang.Exception

发布商向RingBuffer发布活动时调用

但如果我不使用回调来获取数据,我会写一段时间(真实)来获取我自己的数据,我该怎么办?

谢谢!

1 个答案:

答案 0 :(得分:0)

您应该编写回调函数,以便将事件推送到队列中。然后,您可以遍历队列。

Queue<Event> queue = new ArrayBlockingQueue(10);

void onEvent(Event event,
        long sequence,
        boolean endOfBatch)
        throws java.lang.Exception {
    queue.add(event);
}

public void test() {
    for ( Event event : queue ) {
        // Your stuff here.
    }
}