演员终止或如何处理错误的原因

时间:2016-07-22 21:37:39

标签: akka

当演员失败时,我需要将失败的原因发送给另一个演员。

我知道有监督策略,我使用它们。问题是 - 我找不到这种错误报告的正确位置。 我试过看演员,但终止消息不提供终止原因。 目前,我在Decider中添加了错误处理:

  override def supervisorStrategy: SupervisorStrategy =
    OneForOneStrategy(maxNrOfRetries = 10, withinTimeRange = Duration(1, TimeUnit.SECONDS), loggingEnabled = true) {
      case e: Exception =>
        onActorError(sender(), e)
        Stop
    }

但我认为这不是一个好的时间和地点,“决策者”应该回归策略,而不是隐含地做其他事情。

所以问题是:是否有适当的地方来捕捉演员异常并对此采取行动?

1 个答案:

答案 0 :(得分:1)

监督演员的

postRestart方法似乎是进行事后记录的好地方。 来自documentation

  

使用异常调用新actor的postRestart方法   导致重启。默认情况下会调用preStart,就像在   正常的启动案例。