2

ポートフォリオと証券 (その内部) を異なるアクターで処理するサーバーがあります。証券の数が少ない (<20) ポートフォリオの場合、これはうまく機能します。セキュリティ カウントの数を 1000 に増やすと、次の問題が発生しました。

akka.dispatch.FutureTimeoutException: [5000] ミリ秒後に先物がタイムアウトしました

akka config内のタイムアウトを増やすことでこのエラーを回避できますが、それは正しいことですか? 1.2 より前のバージョンの akka では、アクター内で self.timeout を設定できましたが、これは非推奨です。

私が (断続的に) 直面したもう 1 つの問題は、ポートフォリオ アクター内の 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
4

1 に答える 1

0

You do not state which version of Akka you're on, and given my limited time with the crystal ball I'll assume that you're on 1.2.

You can specify a Timeout when you call ask/?

(Also, your code is a bit convoluted, but that I have already solved in your other question.)

Cheers, √</p>

于 2011-11-21T17:26:57.867 に答える