我有以下代码:
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
覆盖并且程序行为没有任何变化。