覆盖平衡池路由器管理器策略不起作用

时间:2016-01-07 17:24:23

标签: akka

我的工作人员代码:

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)
}

但是,每当我向工作人员发送消息时,它都会重新启动而不是升级到父级。似乎覆盖不起作用。

请问好吗?谢谢!

1 个答案:

答案 0 :(得分:1)

升级失败并不意味着异常作为消息发送给父actor,而是使用父actor监督策略来确定要做什么。

您的控制器/父actor不会覆盖supervisionStrategy,因此它具有默认策略,即在异常时重新启动。