Integrálása megszakítók, újrapróbálkozáskor timelimiter a Resilience4j

szavazat
0

Próbálom használni Resilience4j jellemzői. Saját használat esetén is kombinálni megszakítók, újrapróbálkozáskor timelimiter modulokat. Itt van, amit én megpróbáltam.

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

A kérdés itt az, én doSomething () metódus végrehajtja kétszer. Látta valaki ezt a kérdést korábban? Azt akarom, hogy összekapcsolják ezeket a modulokat, és végrehajtja a módszer csak egyszer. Köszönöm a segítséget.

A kérdést 13/02/2020 23:59
a forrás felhasználó
Más nyelveken...                            


1 válasz

szavazat
0

használ timeLimiter.executeFutureSupplier, amely végrehajtja a jövő helyett a díszítő azt. Kérjük, használja azt pontosan ebben a sorrendben:

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();
Válaszolt 14/02/2020 09:53
a forrás felhasználó

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