当超时时,Akka future.await不会返回

时间:2012-04-11 04:54:46

标签: scala akka future

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

导致这种情况的原因是什么?

1 个答案:

答案 0 :(得分:1)

如果超时,等待抛出异常,你是否已经确认你没有在期货中获得例外。是吗?