次のコードがあります。
class A extends Actor with ActorLogging {
override val supervisorStrategy = OneForOneStrategy(maxNrOfRetries = 2) {
case _ => log.info("An actor has been killed"); Restart
}
val b = context.system.actorOf(Props[B], "b")
def receive = {
case _ => context.system.scheduler.schedule(5 seconds, 5 seconds, b, true)
}
}
class B extends Actor with ActorLogging {
def receive = { case true => self ! Kill }
}
self ! Kill
アクターのインスタンスでA
「アクターが殺されました」というメッセージが表示されず、その後のアクターへの呼び出しで「A
デッド レター」メッセージが生成されるため、再起動されませんでした。OneForOneStrategy
が呼び出されない のはなぜですか?
オーバーライド全体を削除するだけOneForOneStrategy
で、プログラムの動作にまったく変更がないという点で奇妙です。