【发布时间】:2021-02-12 04:57:03
【问题描述】:
基本上,我的目标是,当我重新启动正在处理一堆 Akka 流的服务器时,关闭钩子应该等待所有流完成,然后再终止 ActorSystem。
我定义了一个 close 方法来终止参与者系统,就像这样 -
def close(): Future[Terminated] = {
logger.info("Terminating actor system")
system.terminate()
}
我从我的 JVM 的关闭挂钩中调用它。
但是,这显然不会等待流完成,而是中止正在运行的流并终止参与者,这并不能解决我想要做的事情。所以,这似乎不对。
此外,我阅读了有关参与者支持自己的关闭挂钩的文档,但我如何配置它们以使流一直运行直到完成,然后才允许 JVM 退出?
【问题讨论】:
-
您可以使用
watchTermination运算符对返回的 Future 进行平面映射。 doc.akka.io/docs/akka/current/stream/operators/Source-or-Flow/…