1

我是 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 也不会返回。

这可能是什么原因造成的?

4

1 回答 1

1

如果超时,await 会抛出异常,您是否已验证您在 futures.foreach 中没有收到异常?

于 2012-04-11T12:27:38.463 回答