J'utilise Gava retry dans l'un de mes projets. Je veux continuer à réessayer à intervalle fixe si ma méthode ne retourne pas vrai. Dès qu'il redevient vrai, il devrait être arrêté.Utilisation de gava retry framework pour continuer à réessayer à intervalle de temps fixe
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();
}
}
J'ai le code ci-dessus et il ne cesse de réessayer toutes les minutes. Maintenant si à l'exécution, je change la valeur de l'état à true
, alors il devrait être arrêté mais il n'a pas été arrêté. Une idée de ce que je fais?
hmm Je me suis trompé alors comment mon code va-t-il ressembler à ce changement? –
J'ai édité ma réponse s'il vous plaît vérifier. Selon les docs de méthode retryIfResult, il réessayera à chaque fois si le prédicat retourne vrai. – eg04lt3r
Je veux réessayer si elle renvoie toujours false et une fois qu'elle est vraie, elle devrait s'arrêter. Comment ferais-je cela? –