L'intégration de disjoncteur, nouvelle tentative et timelimiter dans Resilience4j

voix
0

Je suis en train d'utiliser les fonctionnalités Resilience4j. Mon cas d'utilisation est de combiner des modules disjoncteur, nouvelle tentative et timelimiter. Voici ce que j'ai essayé.

  Supplier<R> supplier = this::doSomething;
  timeLimiter.executeFutureSupplier(
          () -> CompletableFuture.supplyAsync(supplier));
  return Decorators.ofSupplier(supplier)
            .withCircuitBreaker(circuitBreaker)
            .withRetry(retry)
            .withBulkhead(bulkhead)
            .decorate();

La question ici est, ma méthode doSomething () deux fois exécute. Quelqu'un at-il vu cette question plus tôt? Je veux combiner tous ces modules et exécuter la méthode une seule fois. Merci de votre aide.

Créé 13/02/2020 à 23:59
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

vous utilisez timeLimiter.executeFutureSupplierqui exécute l'avenir au lieu de le décorer. S'il vous plaît utiliser exactement cet ordre:

ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(3);
Supplier<R> supplier = this::doSomething;

CompletableFuture<R> future = Decorators.ofSupplier(supplier)
    .withThreadPoolBulkhead(threadPoolBulkhead)
    .withTimeLimiter(timeLimiter, scheduledExecutorService)
    .withCircuitBreaker(circuitBreaker)
    .withRetry(retry)
    .get().toCompletableFuture();
Créé 14/02/2020 à 09:53
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more