我的工作人员代码:
def receive = {
case msg =>
throw new Exception("Test exception escalation")
}
我的控制器(父)代码:
val strategy = OneForOneStrategy() {
case _: Exception => Escalate
case _ => Escalate
}
val router: ActorRef =
context.actorOf(Props[Worker].withRouter(FromConfig().withSupervisorStrategy(strategy)), name = "router")
def receive = {
case ex: Exception =>
log.info(ex.toString)
}
但是,每当我向工作人员发送消息时,它都会重新启动而不是升级到父级。似乎覆盖不起作用。
请问好吗?谢谢!
答案 0 :(得分:1)
升级失败并不意味着异常作为消息发送给父actor,而是使用父actor监督策略来确定要做什么。
您的控制器/父actor不会覆盖supervisionStrategy
,因此它具有默认策略,即在异常时重新启动。