2

我在 Tomcat 中通过 ActorSystem 使用 akka 2.1.2,但无法关闭它。我正在调用 system.shutdown() ,它正在关闭实际的参与者,但留下了两个 akka 线程并阻止 Tomcat 停止:调度程序和调度程序。

我通过调用 system.scheduler.asInstanceOf[DefaultScheduler].close() 设法关闭了调度程序(需要强制转换,因为调度程序特征没有关闭方法)。但是,我不知道如何让调度程序线程停止。我尝试了在 akka.actor 包中创建对象的狡猾技术,这样我就可以调用 system.dispatcher.shutdown() (一种受保护的方法),但这不起作用 - 仍然有一个或多个 akka 调度程序线程挂起之后。

如何关闭调度程序线程?只要有效,它就不必是理想/正确的方式。

4

1 回答 1

2

我不确定是否有一些关闭方法,但有两种方法可以提供帮助。正如文档中所写:

当调度程序不再注册任何参与者时,它将等待多长时间才能自行关闭,默认为您的 akka 配置“akka.

您可以akka.actor.default-dispatcher.shutdown-timeout在 reference.conf 中设置,然后detach从调度程序中执行操作。

于 2013-07-16T06:57:02.547 回答