从文档中我了解到向演员发送Kill
消息会重新启动它,但实际发生的事情就是停止。
(文件是否已过期?)
答案 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
消息发送给旧的顶级演员。