我正在使用Scala的Disruptor,并且有一个奇怪的问题:链中的最后一个处理程序(无论是哪个处理程序或链是多长时间)都不会被调用。这就是我正在做的事情:
val handlers = Seq(handler1, handler2, handler3)
val firstHandler = input.disruptor.handleEventsWith(handlers.head)
handlers.tail.foldLeft[EventHandlerGroup[IntMessage]](firstHandler) {
(prev,handler) =>
prev.then(handler)
}
在调试器中,我可以看到最后一个处理程序被添加到使用者存储库中,但是从不会以某种方式调用onEvent。我正在使用CachedThreadPool执行器。
我该如何做到这一点?
答案 0 :(得分:0)
我不是scala专家,但下游处理程序将无法看到该事件,直到头处理程序公开它处理事件的事实。即更新了序列号。