顶级Akka演员升级和关机挂钩

时间:2015-08-21 09:24:10

标签: exception akka actor supervisor fault-tolerance

在我的Akka系统中,有一个顶级(“根”)演员Initializer,所有其他演员都来自该演员。还有一个actor Destroyer,它负责在收到Destroy消息时正常关闭系统。演员有几个条件会向Destroy发送Destroyer,但这些并不重要。

我现在想要在Initializer的{​​{1}}中实现功能,如果它无法处理其中一个孩子抛出的失败/异常,它会将其解释为“停止”世界“ - 类型的事件,并优雅地关闭系统。

我的膝跳反应是让SupervisorStrategy升级失败,但我不确定当最顶级的演员升级时会发生什么。如果有一种方法可以以某种方式调用Initializer,但不确定如何将所有内容连接起来,那将会很好。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我在这里回答了类似的问题:How to escalate top-most supervisors in Akka?

基本上,在您的配置集中:

akka.actor.guardian-supervisor-strategy = "akka.actor.StoppingSupervisorStrategy"

然后在您的Initializer中,您应该升级您希望对系统致命的任何异常。然后将停止初始化程序。您可以观看Initializer中的Destroyer并对Terminated事件作出反应,或者如果您想坚持自定义Destroy消息,请发送Destroy来自Destroyer内的postStop()的{​​{1}}。