Die Integration von Leistungsschaltern, Wiederholung und timelimiter in Resilience4j

stimmen
0

Ich versuche Resilience4j Funktionen nicht zu nutzen. Mein Anwendungsfall ist Schalter, Wiederholung und timelimiter Module zu kombinieren. Hier ist, was ich versucht habe.

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

Die Frage ist hier, mein doSomething () -Methode wird ausgeführt zweimal. Hat jemand dieses Problem früher gesehen? Ich möchte alle diese Module kombinieren und das Verfahren nur einmal ausführen. Danke für Ihre Hilfe.

Veröffentlicht am 13/02/2020 um 21:59
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
0

Sie verwenden , timeLimiter.executeFutureSupplierdie die Zukunft statt schmücken sie ausgeführt wird . Bitte verwenden Sie es in genau dieser Reihenfolge:

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();
Beantwortet am 14/02/2020 um 07:53
quelle vom benutzer

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