关于disruptor的事件发布的返回结果

12-02-16 jerryscott2012
诸位大虾:

当前在做Disruptor(ringBuffer)的学习,对RingBuffer发布事件(EventTranslator)后如何获得经过事件处理器(EventProcessor)的返回结果,存在一些问题,特向诸位请教一下。

比如我当下的事件类似TestEvent, 我设定的处理器为PhaseOneEventHandle、PhaseTwoEventHandler、PhaseThreeEventHandler(如下)整合成一个职责链的处理方式

public static class PhaseOneEventHandler implements EventHandler<TestEvent> {

@Override

public void onEvent(TestEvent event, long sequence, boolean endOfBatch) throws Exception {

logger.info("====result1====" + event.getParam() + "," + sequence);

event.setResult1("phaseone===" + System.currentTimeMillis() + ",init===" + event.getParam());

}

}

测试代码为

public void testPublish() {

int n = 10;

for(int i = 0 ; i <n ; i ++) {

this.eventPublisher.publish(new EventTranslator<TestEvent>() {

@Override

public TestEvent translateTo(TestEvent event, long sequence) {

event.setParam(String.valueOf(System.nanoTime()));

return event;

}

})

}

}

现在通过publish没有通过ringBuffer提取返回结果的时候 都是正常和正确的

但如何提取每次publish的返回结果呢(我发现不能直接使用 ringBuffer.get(sequence)的方式)

请诸位大侠有过类似调试经验的请不吝赐教

jerryscott2012

1
猜你喜欢