Spring Bootでspring-retryを使って処理をリトライする方法(@EnableRetryと@Retryableと@Recover)

Spring Bootでspring-retryを使って処理をリトライする方法(@EnableRetryと@Retryableと@Recover)

Spring Bootである処理を指定した回数分リトライしたい、と言った場合はあまり知られていないと思うのですがspring-retryを使うと簡単に実装することができます。

build.gradleのdependenciesに以下を追記します。

リトライしたいクラスに@EnableRetryを付与します。リトライしたいメソッドに@Retryableアノテーションを付与します。

valueに{}で例外を指定します。複数指定する場合はカンマ区切りで指定します

maxAttemptsはリトライ回数です。ここでは5回です。

backoffは@Backoff(delay=1000)とすることによってリトライ間隔を指定します。

単位はミリ秒なのでここでは1秒です。

とりあえずリトライされるか試したいだけなので以下のようなメインにします。

実行すると1秒おきに5回リトライされて6回目の例外時はエラーとなっているのが確認できます。

Spring Bootでspring-retryを使って処理をリトライする方法

でもこの動きちょっとまずくない?という場合に@Recoverアノテーションを付与したメソッドを作成して、6回目のリトライエラー時の回避メソッドを作成することができます。

recoメソッドに@Recoverアノテーションを付与しました。メソッド名は何でもよいです。@Retryableと同じクラスに@Recoverアノテーションを付与したメソッドがあればよいです。

今回はリトライ間隔を1.5秒にしました。

Spring Bootでspring-retryを使って処理をリトライする方法(@EnableRetryと@Retryable)

6回目例外発生時に@Recoverアノテーションが付与されたメソッドが実行されることが確認できます。

スポンサーリンク
  • このエントリーをはてなブックマークに追加
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA