spring bootは@Retryableを使って再処理します。


前言
いつ再処理が必要ですか?
実際の仕事では、リピート処理はよく見られます。例えば、メッセージの送信失敗、リモートサービスの呼び出し失敗、ロックの奪い合い失敗など、これらのエラーは、ネットワークの変動によるものかもしれません。待ってから処理を再開することができます。通常は、try/catch、whileループなどの文法で再処理されますが、このようなやり方は統一性に欠けています。多くのコードを書く必要がありますが、spring-retryは、既存のビジネスロジックコードに侵入しないように、優雅に再処理機能を実現します。
考え方
@Retryableと@Recoverを使って再処理を実現し、再処理が失われた後のコールバックを実現します。
実現する
1.pom参照

<dependency>
 <groupId>org.springframework.retry</groupId>
 <artifactId>spring-retry</artifactId>
</dependency>
2.アプリケーション起動クラスのオープンretry
….その他のコメント

@EnableRetry
public class BaseApplication {
  .......
}
3.指定方法に@Retryableをマークして再試験を開く

 @Retryable(value={A  .class,B  .class},
       maxAttempts=    ,
       backoff = @Backoff(value =          ))
 public Integer retry() {
  LOGGER.info("  retry");
  final int a = 5;
  int num = new SecureRandom().nextInt();
  if (num % a == 0) {
   return num;
  }
  throw new RetryException("    ");
 }
4.指定方法に@Recoverをマークして再試行失敗後に呼び出す方法(注重処理方法と同じクラスにする必要があります。)

 @Recover
 public void recover(A   e) {
  // ... do something
 }

 @Recover
 public void recover(B   e) {
  // ... do something
 }

終了
単spring bootの応用を実証しましたが、その後のcloudシーンでは、例えば、zul、などのコンポーネントが再処理に関連しています。次の章で説明します。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。