1

在我的 Akka 系统中,有一个顶级(“根”)actor ,Initializer所有其他actor 都来自该actor。还有一个actor,Destroyer负责在收到Destroy消息时优雅地关闭系统。有几种情况,演员会发送 aDestroyDestroyer,但这些在这里并不重要。

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

我的下意识反应是Initializer升级失败,但我不确定当顶级演员升级时会发生什么。如果有一种方法可以让升级以某种方式调用Desroyer,但不知道如何将其全部连接起来,那就太好了。有任何想法吗?

4

1 回答 1

1

我在这里回答了一个类似的问题:如何升级 Akka 的最高主管?

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

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

然后在你的Initializer你应该升级任何你想对系统致命的异常。然后将停止初始化程序。您可以观看Initializerfrom 并对事件Destroyer做出反应Terminated,或者如果您想坚持您的自定义消息,Destroy请在.DestroyDestroyerpostStop()Initializer

于 2015-08-21T09:31:48.137 回答