Akka future.await在发生超时时不返回

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

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

+4

嗨!如果你是Akka新手,你为什么使用一个非常旧的版本? 1.3.1是1.x系列中的最新版本,但是我们在2个月前发布了2.0版本,这是非常棒的,它保证了2.0的名称。 – 2012-04-11 08:19:33

+0

好问题:)虽然我是Akka的新手,但这个项目已经进行了一年多了,仍然在使用1.2。尽管如此,我们应该尽快登陆1.3.1。 – Sanjay 2012-04-11 18:14:54

+0

好的,很高兴听到! – 2012-04-11 21:35:47

等待超时时抛出异常,您是否证实您没有在futures.foreach中获得异常?