Integrering circuitbreaker, retry og timelimiter i Resilience4j

stemmer
0

Jeg prøver å bruke Resilience4j funksjoner. Min bruk tilfellet er å kombinere circuitbreaker, prøv på nytt og timelimiter moduler. Her er det jeg har prøvd.

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

Spørsmålet her er mine doSomething () -metoden Utfører to ganger. Har noen sett dette problemet tidligere? Jeg ønsker å kombinere alle disse modulene og gjennomføre metoden bare én gang. Takk for hjelpen.

Publisert på 13/02/2020 klokken 23:59
kilden bruker
På andre språk...                            


1 svar

stemmer
0

du bruker timeLimiter.executeFutureSuppliersom utfører fremtiden i stedet for å dekorere den. Bruk den i akkurat denne rekkefølgen:

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();
Svarte 14/02/2020 kl. 09:53
kilden bruker

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