在Akka 2.0.x中重启顶级actor

时间:2013-01-21 15:23:06

标签: akka

从文档中我了解到向演员发送Kill消息会重新启动它,但实际发生的事情就是停止。

(文件是否已过期?)

2 个答案:

答案 0 :(得分:1)

Kill是“所有Actors都会理解的消息,处理时会使Actor抛出一个ActorKilledException,这将触发监督。”因此,如果被杀死的actor的父actor的主管策略是Stop,那么它将不会重新启动。在akka 2.1.0中,您可以配置监护人的主管策略(即:“/ user /”),该策略监督顶级用户创建的演员。

答案 1 :(得分:1)

创建一个新的顶级actor,然后在其preStart方法中创建旧的顶级actor。这将是主管,可以通过将此代码放在新的顶级actor中来设置主管策略:

override val supervisorStrategy = OneForOneStrategy() {
  case _: Exception => Restart
  case _: Throwable => Escalate
}

仍然需要将Kill消息发送给旧的顶级演员。