akka - 优雅地重启整个 Akka Actor 系统

标签 akka

如何优雅地重启整个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/

相关文章:

scala - 如何用akka-http将字节流解析为 `HttpRequest`对象?

scala - 在 Akka Streams 中从 Actor 创建流

java - 在 Play Framework 中使用 WebSockets 的缓冲区溢出

java - 在 Java 中使用 Akka 的 REST API

java - 来自不同网络的 Akka 远程 Actor

akka - 使用 Akka HTTP(正式名称为 Spray)的 GET 请求的查询参数

java - Akka : How to get actor causing exception on supervisor

scala - Akka中的终止actor系统

scala - 玩!异步操作 akka AskTimeoutException

akka - 为什么akka-stream的Source.groupedWithin不考虑持续时间?