У меня есть следующий код:
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
, и никаких изменений в поведении программы не произойдет.