Тайм-аут для фьючерсов в Акке - PullRequest
2 голосов
/ 21 ноября 2011

У нас есть сервер, который обрабатывает портфель и ценные бумаги (внутри него) у разных участников.Для портфеля с меньшим количеством ценных бумаг (<20) это работает нормально.Когда я увеличил количество счетчиков безопасности до 1000, возникли следующие проблемы: </p>

akka.dispatch.FutureTimeoutException: тайм-аут фьючерсов через [5000] миллисекунд

Я мог обойти эту ошибку, увеличив тайм-аут внутриakka config, это правильно?В версиях akka более ранних, чем 1.2, я мог установить 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

1 Ответ

0 голосов
/ 21 ноября 2011

Вы не указываете, какую версию Akka вы используете, и, учитывая мое ограниченное время на хрустальном шаре, я предполагаю, что вы используете 1.2.

Вы можете указать время ожидания при вызове ask /?

(Кроме того, ваш код немного запутан, но я уже решил в вашем другом вопросе.)

Ура, √

...