Skip to content

starlight-storm/spring-retry

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

Spring Retry サンプル

概要

  • Controllerのハンドラメソッドのリトライと、Serviceのメソッドのリトライ
    ・ 例えば、あるメソッドでExceptionが発生した場合でも、そのメソッドを何度かリトライすることで正常終了になる可能性がある場合に用いる。
@RestController
public class RetryController {	
  @GetMapping
  @Retryable(value = RetryException.class, maxAttempts = 5, backoff = @Backoff(delay = 500))
  public String retryMethod() {
    return "Hello!";
  }
	
  @Recover
  public String recover(RetryException exception) {
      return "Retry Exception!";
  }
  • Serviceの方は、インタフェースに@Retryableと@Recoverが付与されていることに注意。
    ・ Serviceの実装クラスに@Recoverを付与した場合は、何故かうまく動作しない。

アノテーションの説明

  • @Retryable
    ・ クラス(インタフェース)のメソッドに付与する。
    ・ @Retryable(value = リトライ対象のエクセプションクラス, maxAttempts = リトライ回数, backoff = @Backoff(delay = リトライの間隔))
    ・ valueには、value = {エクセプションクラス, ...}で複数のリトライ対象のエクセプションクラスが記述可能です。
  • @Recover
    ・ @Retryableと同じクラス(インタフェース)のメソッドに付与する。
    ・ リトライ回数を越えて、リトライ対象のエクセプションクラスが発生した場合の処理を記述。

サンプルコードのテスト方法

  • Advances REST clientを使って動作確認すると便利です。
  • Retry回数は5回です。
  • localhost:8080/で初期化(retryのためのカウンタをクリア)
  • localhost:8080/nでn回Exceptionを発行し、Retryします。
  • n<5だと"Hello!"が、n>=6だと"Retry Exception!"が戻ります。

お仕事のご用命は以下までご連絡ください
info@starlight-storm.com

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors