我是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也不会返回。
导致这种情况的原因是什么?
答案 0 :(得分:1)