Интеграция автоматического выключателя, и повторная попытка timelimiter в Resilience4j

голоса
0

Я пытаюсь использовать функции Resilience4j. Мой случай использования является сочетанием выключателя, повторы и timelimiter модулей. Вот то, что я пытался.

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

Проблема здесь, метод мой йоЗотеЬЫпд () выполняется дважды. Кто-нибудь видел этот вопрос раньше? Я хочу, чтобы объединить все эти модули и выполнить метод только один раз. Спасибо за вашу помощь.

Задан 13/02/2020 в 23:59
источник пользователем
На других языках...                            


1 ответов

голоса
0

вы используете , timeLimiter.executeFutureSupplierкоторый вместо выполняет будущее украшать его. Пожалуйста , используйте его именно в таком порядке:

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();
Ответил 14/02/2020 в 09:53
источник пользователем

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