easy-retryを使用して簡単にタスクの再試行を行います

2204 ワード

Easy-retryはJavaタスク再試行フレームワークです.
プロジェクトのホームページ:https://github.com/bournecui/easy-retry
主な特徴
  • 柔軟性により、異なる再試行ポリシーを設定できます.たとえば、
  • 異常が発生した場合に再試行します.再試行される異常と無視される異常を設定できます.
  • 戻り値が予期しない場合にリセットします.


  •          また、最大再試行回数、最大待機時間など、再試行を中断するポリシーを設定することもできます.
  • 使いやすい
  • わずか数行のコードでタスクを再試行できます.

  • 軽量級
  • slf 4 j、logbackログフレームワークを除き、サードパーティJarパッケージは導入されていません.


  • 使用方法
    導入依存
    
            com.github.bournecui
            easy-retry
            0.0.1
    

    EasyRetryBuilderを使用してEasyRetryインスタンスを構築します.これはスレッドが安全なので、プログラムで構築すればいいです.
    EasyRetry easyRetry = EasyRetryBuilder.newBuilder()
                     .maxAttempts(10)
                     .includeExceptions(IllegalStateException.class)
                     .build();

    EasyCallable(戻り値あり)またはEasyRunnable(戻り値なし)を使用してタスクをカプセル化し、easyRetryで実行します.
    Integer res1 = easyRetry.call(new EasyCallable() {
                @Override
                public Integer call() {
                    int aInt = (int) (Math.random() * 10);
                    if (aInt % 3 != 0) {
                        throw new IllegalStateException(aInt + " is not expected!");
                    }
                    return aInt;
                }
            });

    戻り値のあるタスクでは、ResultPredicateを使用して戻り値が欲しいかどうかを判断できます.あなたが望んでいない場合は、再試行されます.
    Integer res2 = easyRetry.call(new EasyCallable() {
                @Override
                public Integer call() {
                    return (int) (Math.random() * 10);
                }
            }, new ResultPredicate() {
                @Override
                public boolean test(Integer result) {
                    return result % 3 != 0;
                }
            });
    

    ランムダ式を使用してcom.github.bournecui.easyretry.EasyRetryBuilder.newBuilderをインポートすると、コードがより簡潔に見えます.
    newBuilder()
              .maxAttempts(10)
              .includeExceptions(IllegalStateException.class)
              .build()
              .call(() -> (int) (Math.random() * 10), result -> result % 3 != 0);