Akka future.await在发生超时时不返回
问题描述:
我是Akka的新手,并且在Akka 1.2的Future.await调用中遇到问题。我用OnTimeout和OnException处理程序创建了一些Futures,然后我等待它们完成。该代码看起来是这样的:Akka future.await在发生超时时不返回
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")
当有异常,异常处理程序被执行,我也得到了“在这里得到了”线。但是,当发生超时时,尽管超时处理程序已执行,但我从未进入“到此处”行。即使设置了AtMost值,await也不会返回。
这可能是什么原因造成的?
答
等待超时时抛出异常,您是否证实您没有在futures.foreach中获得异常?
嗨!如果你是Akka新手,你为什么使用一个非常旧的版本? 1.3.1是1.x系列中的最新版本,但是我们在2个月前发布了2.0版本,这是非常棒的,它保证了2.0的名称。 – 2012-04-11 08:19:33
好问题:)虽然我是Akka的新手,但这个项目已经进行了一年多了,仍然在使用1.2。尽管如此,我们应该尽快登陆1.3.1。 – Sanjay 2012-04-11 18:14:54
好的,很高兴听到! – 2012-04-11 21:35:47