0

我正在使用 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 执行器。

我怎样才能使这项工作?

4

1 回答 1

0

我不是 scala 专家,但在头部处理程序公开它已处理事件的事实之前,下游处理程序将看不到该事件。即更新了它的序列号。

于 2015-06-22T13:28:07.737 回答