我在我的一个Web应用程序中使用Akka。该应用程序是一个标准的Spring应用程序,它在Tomcat servlet容器中初始化。在Web应用程序中正确关闭Akka actor系统
我有一个简单的ServletContextListener这样的:
public class AkkaInitializer implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
ActorSystem system = ActorSystem.create("system");
// initialize main top-level master actor here ...
}
}
的contextInitialized得到被Tomcat上称为应用程序的启动。 现在的问题是,假设我有一个顶级演员,他的一个孩子可能会升级失败。我希望这个主角能够记录发生的故障并在之后关闭JVM。这怎么能够以一种干净的方式来实现?
感谢您的反馈意见。在我的postStop钩子中调用getContext()。system()。shutdown()方法是否会出错?然后,无论我初始化我的演员系统,我都可以调用actorSystem.registerOnTermination({system.exit(1);}); – HiChews123
如果你的数据流很简单,并且在你的主演员停下来之后不可能进行其他重要的数据处理(其他演员) - 那么,我想,是的。 –