优雅地重启整个Akka演员系统

Rob*_*een 7 akka

我怎样才能优雅地重启整个演员系统?换句话说,用一个gracefulStop(或至少是重要的那些)来阻止系统中的所有演员!

实际上,我希望在测试期间重新启动应用程序,而不必每次都启动新的单独JVM.

我正在使用Akka 2.0.5.

Rol*_*uhn 6

每当你实现一个actor系统并且缺少一个函数时,不要犹豫再添加一个actor来处理它:在这种情况下创建一个actor,它的工作是向你的重要演员发送优雅的停止请求并等待他们的终止.那个演员可以关闭演员系统,而从外面你awaitTermination.如果您创建了该actor 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
}
Run Code Online (Sandbox Code Playgroud)