easy-retryを使用して簡単にタスクの再試行を行います
2204 ワード
Easy-retryはJavaタスク再試行フレームワークです.
プロジェクトのホームページ:https://github.com/bournecui/easy-retry
主な特徴柔軟性により、異なる再試行ポリシーを設定できます.たとえば、 異常が発生した場合に再試行します.再試行される異常と無視される異常を設定できます. 戻り値が予期しない場合にリセットします.
また、最大再試行回数、最大待機時間など、再試行を中断するポリシーを設定することもできます.使いやすい わずか数行のコードでタスクを再試行できます.
軽量級 slf 4 j、logbackログフレームワークを除き、サードパーティJarパッケージは導入されていません.
使用方法
導入依存
EasyRetryBuilderを使用してEasyRetryインスタンスを構築します.これはスレッドが安全なので、プログラムで構築すればいいです.
EasyCallable(戻り値あり)またはEasyRunnable(戻り値なし)を使用してタスクをカプセル化し、easyRetryで実行します.
戻り値のあるタスクでは、ResultPredicateを使用して戻り値が欲しいかどうかを判断できます.あなたが望んでいない場合は、再試行されます.
ランムダ式を使用してcom.github.bournecui.easyretry.EasyRetryBuilder.newBuilderをインポートすると、コードがより簡潔に見えます.
プロジェクトのホームページ:https://github.com/bournecui/easy-retry
主な特徴
また、最大再試行回数、最大待機時間など、再試行を中断するポリシーを設定することもできます.
使用方法
導入依存
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);