7

アクターシステム全体を正常に再起動するにはどうすればよいですか?言い換えれば、システム内のすべてのアクターをgracefulStop(または少なくとも重要なアクター!)で停止します。

基本的に、テスト中にアプリケーションを再起動したいのですが、毎回新しい個別のJVMを起動するオーバーヘッドはありません。

私はAkka2.0.5を使用しています。

4

2 に答える 2

6

アクターシステムを実装していて、1つの機能が不足している場合は、遠慮なくもう1つのアクターを追加して、それを処理してください。この場合、重要なアクターに適切な停止要求を送信して待機することを目的とした1つのアクターを作成します。それらの終了。そのアクターは、外部からあなたの間にアクターシステムをシャットダウンすることができますawaitTermination。でそのアクターを作成した場合はsystem.actorOf(Props[Terminator], "terminator")、でシャットダウンできます

system.actorFor("/user/terminator") ! MakeItStop // or whatever message you choose
try system.awaitTermination(1.minute) // or however long it may take
catch {
  case _: TimeoutException => system.shutdown() // as a last resort
}
于 2013-01-26T13:28:32.103 に答える
1

単体テストの場合は、ActorSystemを停止して新しいものを開始するだけです。

val system1 = ActorSystem("system1")
system1.shutdown() // This is async and will return before the system actually stops.

val system2 = ActorSystem("system2")

システムを再起動する方法がわかりません(実際には、上記が機能するかどうかはわかりませんが、機能しない理由はわかりません)。

于 2013-01-23T14:12:32.683 に答える