我们有一个服务器来处理不同参与者的投资组合和证券(在它内部)。对于证券数量较少(<20)的投资组合,这很好用。当我将安全计数增加到 1000 时,遇到以下问题:
akka.dispatch.FutureTimeoutException:期货在 [5000] 毫秒后超时
我可以通过增加akka 配置中的超时来绕过这个错误,这是正确的做法吗?在 1.2 之前的 akka 版本中,我可以在 actor 内部设置 self.timeout ,但这已被弃用。
我面临的另一个问题(间歇性地)是整个服务器在加入我的投资组合参与者中的 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