我是 Akka 的新手,在 Akka 1.2 中调用 Future.await 时遇到问题。我已经创建了一些带有 OnTimeout 和 OnException 处理程序的 Futures,然后我正在等待它们完成。代码看起来像这样:
val futures = ListBuffer.empty[Future[Any]]
val future = (peer ? bMsg) onResult {
case result => result match {
case msg:Ack => handleAck(msg)
case msg:Nack => handleNack(msg)
}
} onTimeout {
case _ => {
// do something
}
} onException {
case _ => {
// do something
}
}
futures += future
futures.foreach(_.await(Duration(8000, "millis")))
log.info("Got here")
当出现异常时,异常处理程序被执行,然后我进入“Got here”行。但是,当超时时,虽然超时处理程序被执行,但我永远不会到达“到达这里”行。即使设置了 AtMost 值,await 也不会返回。
这可能是什么原因造成的?