私は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は戻りません。
これを引き起こしている可能性がありますか?