0

Akka スーパーバイザー戦略では、スローされた例外の種類に応じてカスタム動作が可能になるため、スーパーバイザーは、失敗したアクターを停止、再起動、再開するか、エラーをその親にエスカレートするかを選択できます。アクターが CircuitBreakerOpenException で失敗し、アクターを再起動する必要がある場合に、カスタム スーパーバイザー戦略を構築しようとしています。再起動戦略を選択した場合、アクターはすぐに再起動されますが、resetTimeout 間隔内にすぐに再び失敗するため意味がありません。したがって、正しい動作は、XXX 秒待ってから Restart ディレクティブを使用することです。しかし、この振る舞いは、アクターの監督戦略の観点からは表現できません。

そのような動作を実装する正しい方法は何ですか? もちろん、子アクターの実装に try/catch ハンドルを追加することもできますが、これはアクターの監視の概念に反します。

4

1 に答える 1

1

やりたいことやそれ以上のことができるバックオフ監視戦略があります。minBackoff 引数を使用して、最初の待機を指定できます。また、これは指数関数的なバックオフ戦略であるため、監視対象のアクターを再起動し続けますが、子アクターが例外をスローし続けるとバックオフ時間が長くなります。

于 2019-08-05T08:00:03.790 に答える