如何优雅地重启整个actor系统?换句话说,用 gracefulStop
停止系统中的所有参与者。 (或者至少是重要的!)
实际上,我想在测试期间重新启动应用程序,而没有每次启动新的单独 JVM 的开销。
我正在使用 Akka 2.0.5。
最佳答案
每当您实现了一个 actor 系统并且它缺少一个功能时,请不要犹豫再添加一个 actor 来处理这个问题:在这种情况下,创建一个 actor,其工作是向您的重要 actor 发送优雅的停止请求并等待他们的终止。然后那个 Actor 可以关闭 Actor 系统,而从外面你awaitTermination
.如果你用 system.actorOf(Props[Terminator], "terminator")
创建了那个 Actor ,然后你可以关闭它
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
}
关于akka - 优雅地重启整个 Akka Actor 系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14481656/