Integrace vypínač, opakování a timelimiter v Resilience4j

hlasů
0

Snažím se používat funkce Resilience4j. Můj případ užití je kombinovat vypínač, zkuste to znovu a timelimiter moduly. Zde je to, co jsem se snažil.

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

Otázkou zde je, moji doSomething () metoda se provede dvakrát. Viděl někdo tento problém dříve? Chci se spojit všechny tyto moduly a spustit metodu pouze jednou. Díky za vaši pomoc.

Položena 13/02/2020 v 23:59
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
0

používáte timeLimiter.executeFutureSupplier, který vykonává budoucnost místo zdobení to. Použijte ji přesně tomto pořadí:

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();
Odpovězeno 14/02/2020 v 09:53
zdroj uživatelem

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