1

私はAkkaを初めて使用し、Akka1.2でのFuture.await呼び出しに問題があります。OnTimeoutハンドラーとOnExceptionハンドラーを使用していくつかのFutureを作成し、それらが完了するのを待っています。コードは次のようになります。

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")

例外があると、例外ハンドラーが実行され、「Gothere」行に移動します。ただし、タイムアウトが発生した場合、タイムアウトハンドラーは実行されますが、「Gothere」の行に到達することはありません。AtMost値が設定されていても、awaitは戻りません。

これを引き起こしている可能性がありますか?

4

1 に答える 1

1

タイムアウトした場合、awaitは例外をスローします。futures.foreachで例外が発生していないことを確認しましたか?

于 2012-04-11T12:27:38.463 に答える