アクターに失敗時に何かを再試行させる良い方法はありますが、再試行間の時間間隔は長くなりますか? アクターに 15 秒後、30 秒後、1 分ごとに限られた回数だけ再試行させたいとします。
これが私が思いついたものです:
- 実際の作業を実行するアクターのメソッドには、オプションの
RetryInfoパラメーターがあり、存在する場合、現在の再試行回数が含まれます。 - 失敗すると、アクターは自分自身に新しい
ScheduleRetryMessagewithを送信しretryCount + 1、RuntimeException をスローします。 - 別のアクターがワーカー アクターを監督し、return をディレクティブとして使用し
new OneForOneStrategy(-1, Duration.Inf()ますResume。アクターには状態がないため、Resume問題ないはずです - を受け取ると
ScheduleRetryMessage、アクターは- if
retryCount < MAX_RETRIES: Akka のスケジューラを使用してRetryMessage、希望する遅延後に送信をスケジュールします - そうでなければ、最終的にあきらめて、エラー報告のために別のアクターにメッセージを送信します
- if
これは良い解決策ですか、それともより良いアプローチがありますか?