アクターシステム全体を正常に再起動するにはどうすればよいですか?言い換えれば、システム内のすべてのアクターをgracefulStop
(または少なくとも重要なアクター!)で停止します。
基本的に、テスト中にアプリケーションを再起動したいのですが、毎回新しい個別のJVMを起動するオーバーヘッドはありません。
私はAkka2.0.5を使用しています。
アクターシステム全体を正常に再起動するにはどうすればよいですか?言い換えれば、システム内のすべてのアクターをgracefulStop
(または少なくとも重要なアクター!)で停止します。
基本的に、テスト中にアプリケーションを再起動したいのですが、毎回新しい個別のJVMを起動するオーバーヘッドはありません。
私はAkka2.0.5を使用しています。
アクターシステムを実装していて、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
}
単体テストの場合は、ActorSystemを停止して新しいものを開始するだけです。
val system1 = ActorSystem("system1")
system1.shutdown() // This is async and will return before the system actually stops.
val system2 = ActorSystem("system2")
システムを再起動する方法がわかりません(実際には、上記が機能するかどうかはわかりませんが、機能しない理由はわかりません)。