Disruptor helloworld的例子

时间:2012-03-22 16:28:33

标签: java disruptor-pattern

我想学习Disruptor framework。谁可以给我一个helloworld示例,可以使用Java程序语言在main方法中运行?

3 个答案:

答案 0 :(得分:12)

这是一个如何使用Disruptor库的简单,可运行的示例。示例使用Disruptor库的2.10.4版本编写。

https://github.com/trevorbernard/disruptor-examples

我也在这个帖子上发帖:The simplest and actual example code of LMAX Disruptor

答案 1 :(得分:4)

这里还有一个来自我身边。我尝试了一个使用开源Lmax库的破坏者示例 我认为使用lmax disruptor(而不是disruptor的内部)背后的想法是创建消息调度程序和注册事件监听器,如消费者。

您创建了一个Disruptor,并指定了消息类型。

Disruptor<Message> disruptor = new Disruptor<Message>(Message.EVENT_FACTORY, 2048, exec);`

您创建处理程序

 final EventHandler<Message> handler = new EventHandler<Message>() {
        // event will eventually be recycled by the Disruptor after it wraps
        public void onEvent(final Message event, final long sequence, final boolean endOfBatch) throws Exception {
            Integer value = event.getMsg();
            if(value % 10000 == 0){
                System.out.println("ValueEvent: " + value + " Sequence: " + sequence);
                double timeINnanos = (System.nanoTime()-startTime);
                double timetaken = (timeINnanos/1e9);
                System.out.println("Time Taken till now in sec " + timetaken );
            }
        }
    };

使用disruptor注册处理程序

         disruptor.handleEventsWith(handler);

启动该破坏者并将返回的RingBuffer传递给您的制作人

         RingBuffer<Message> ringBuffer = disruptor.start();
         Producer producer = new Producer(ringBuffer);

可在此处找到完整代码 Github link

答案 2 :(得分:2)

我建议你看一下LMAX代码LMAX Source Code Test Directory 中的测试目录。在我看来,它是您使用LMAX可以做的所有事情的最佳来源。有关简单示例,请查看以下链接Simple Example

我还建议您查看DSL examples.