从文档中我了解到向Kill
演员发送消息将重新启动它,但实际发生的是它只是停止了。
(文档是否过期?)
Kill 是“一条所有 Actor 都会理解的消息,在处理后将使 Actor 抛出一个 ActorKilledException,这将触发监督。”。所以如果被杀死的actor的父actor的supervisor策略是Stop,那么它不会被重启。在 akka 2.1.0 中,您可以配置监护人的主管策略(即:“/user/”),它监督顶级用户创建的演员。
创建一个新的顶级actor,然后在其preStart
方法中创建旧的顶级actor。这将是主管,可以通过将此代码放入新的顶级参与者中来设置主管策略:
override val supervisorStrategy = OneForOneStrategy() {
case _: Exception => Restart
case _: Throwable => Escalate
}
消息仍然需要发送给旧的Kill
顶级参与者。