2013-01-21 41 views

回答

1

创建一个新的顶级演员,然后在其preStart方法中创建旧的顶级演员。这将是主管,而主管战略可以通过把这个代码在新的顶级演员进行设置:

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

Kill消息仍然需要被发送到什么是旧的顶级演员。

+1

您应该考虑使用scala.util.control.NonFatal –

1

杀是“A消息的所有演员都会明白,在处理时会让演员抛出ActorKilledException,这将引发监管。”所以如果被杀的演员的父母演员的主管策略是停止,那么它将不会被重新启动。在akka 2.1.0中,您可以配置监护人的监督者策略(即:“/ user /”),该监督者监督顶级用户创建的角色。