0
私のプロジェクトでGuavaの再試行を使用しています。私のメソッドがtrueを返さない場合は、一定の間隔で再試行しています。それが真を返すとすぐに、それは停止するはずです。guavaの再試行フレームワークを使用して一定の時間間隔で再試行を続ける
public static void main(String[] args) {
Callable<Boolean> callable = new Callable<Boolean>() {
public Boolean call() throws Exception {
System.out.println("hello: " + new Date());
boolean status = false;
return status;
}
};
Retryer<Boolean> retryer =
RetryerBuilder.<Boolean>newBuilder().retryIfResult(Predicates.<Boolean>alwaysTrue())
.withWaitStrategy(WaitStrategies.fixedWait(1, TimeUnit.MINUTES))
.withStopStrategy(StopStrategies.neverStop()).build();
try {
boolean abc = retryer.call(callable);
System.out.println("world" + abc);
} catch (RetryException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
私は上記のコードを取得しており、1分ごとに再試行を続けます。実行時に状態の値をtrue
に変更すると、停止するはずですが停止しませんでした。私は何が間違っているのか考えていますか?
hmm私は混乱しています。私のコードはこの変更のように見えますか? –
私の答えを編集しました。 retryIfResultメソッドdocsによると、述語がtrueを返すたびに再試行されます。 – eg04lt3r
常にfalseを返すと再試行したいが、trueを返すと停止するはずです。どうすればいい? –