当演员失败时,我需要将失败的原因发送给另一个演员。
我知道有监督策略,我使用它们。问题是 - 我找不到这种错误报告的正确位置。 我试过看演员,但终止消息不提供终止原因。 目前,我在Decider中添加了错误处理:
override def supervisorStrategy: SupervisorStrategy =
OneForOneStrategy(maxNrOfRetries = 10, withinTimeRange = Duration(1, TimeUnit.SECONDS), loggingEnabled = true) {
case e: Exception =>
onActorError(sender(), e)
Stop
}
但我认为这不是一个好的时间和地点,“决策者”应该回归策略,而不是隐含地做其他事情。
所以问题是:是否有适当的地方来捕捉演员异常并对此采取行动?
答案 0 :(得分:1)
postRestart
方法似乎是进行事后记录的好地方。
来自documentation:
使用异常调用新actor的postRestart方法 导致重启。默认情况下会调用preStart,就像在 正常的启动案例。