關於disruptor的事件釋出的返回結果

jerryscott2012發表於2012-02-16
諸位大蝦:

當前在做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


相關文章