阿卡的期货超时

时间:2011-11-21 16:12:41

标签: timeout future akka

我们有一台服务器可以处理不同参与者的投资组合和证券(在其中)。对于证券数量较少(<20)的投资组合,这种方法很好。当我将安全计数增加到1000时,遇到以下问题:

akka.dispatch.FutureTimeoutException:期货在[5000]毫秒后超时

我可以通过增加akka配置中的超时来绕过这个错误,这是正确的做法吗?在早于1.2的akka​​版本中,我可以在actor中设置self.timeout但不推荐使用。

我遇到的另一个问题(间歇性地)是整个服务器在我的投资组合actor中加入futures.map代码时挂起:

    //fork out for each security
    val listOfFutures = new ListBuffer[Future[Security]]()
    for (security <- portfolio.getSecurities.toList) {
      val securityProcessor = actorOf[SecurityProcessor].start()
      listOfFutures += (securityProcessor ? security) map {
        _.asInstanceOf[Security]
      }
    }
    EventHandler.info(this,"joining results from security processors")
    //join for each security
    val futures = Future.sequence(listOfFutures.toList)
    futures.map {
      listOfSecurities =>
        portfolioResponse = MergeHelper.merge(portfolio, listOfSecurities)
    }.get

1 个答案:

答案 0 :(得分:0)

你没有说明你所使用的Akka版本,并且考虑到我在水晶球上的时间有限,我会认为你的版本是1.2。

您可以在调用ask /?

时指定超时

(另外,你的代码有点复杂,但我已经解决了你的其他问题。)

干杯, √