【发布时间】:2012-04-23 09:47:18
【问题描述】:
我是 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 也不会返回。
这可能是什么原因造成的?
【问题讨论】:
-
嗨!如果您是 Akka 新手,为什么要使用非常旧的版本? 1.3.1 是 1.x 系列中的最新版本,但我们在 2 个月前发布了 2.0,它非常棒,以至于它保证了 2.0 的名称。
-
好问题 :) 虽然我是 Akka 的新手,但该项目已经进行了一年多,并且仍在使用 1.2。不过,我们应该很快就会使用 1.3.1。