2013-01-21 77 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 /」),該監督者監督頂級用戶創建的角色。