Akka 监督策略允许自定义行为,具体取决于它抛出的异常类型,因此监督者可以选择是否应该停止、重新启动、恢复失败的 Actor 或将错误升级到其父级。当演员因 CircuitBreakerOpenException 失败并且需要重新启动演员时,我正在尝试构建自定义主管策略。如果我只选择重新启动策略,actor 将立即重新启动,这是没有意义的,因为它会在 resetTimeout 间隔内立即再次失败。所以正确的行为是等待 XXX 秒,然后使用 Restart 指令。但这种行为不能用演员监督策略来表达。
实施这种行为的正确方法是什么?我当然可以在子actor实现中添加一个try/catch句柄,但这违背了actor监督的概念。