0

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

(文档是否过期?)

4

2 回答 2

1

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

于 2013-01-21T16:18:33.957 回答
1

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

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

消息仍然需要发送给旧的Kill顶级参与者。

于 2013-01-21T16:54:07.217 回答