0

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

实施这种行为的正确方法是什么?我当然可以在子actor实现中添加一个try/catch句柄,但这违背了actor监督的概念。

4

1 回答 1

1

有一个后退监督策略可以做你想做的事情等等。您可以使用 minBackoff 参数来指定您的初始等待。我还应该说这是一种指数退避策略,因此它将继续重新启动受监督的 Actor,但如果子 Actor 继续抛出异常,它将增加退避时间。

于 2019-08-05T08:00:03.790 回答