Как украсить функциональный интерфейс потребителя повторной попыткой в ​​resilience4j - PullRequest
0 голосов
/ 08 мая 2020

В настоящее время DecorateConsumer. java в библиотеке resilience4j-all не предоставляет метод украшения для Retry (поддерживает только Circuit Breaker, RateLimiter и BulkHead).

Retry. Класс java также не предоставляет эта опция

У меня есть потребительская функция publi c void call (String key), которая внутренне выполняет rest Call со значением key.

Но в документах resilience4j упоминается: «Вы можете украсить any Callable, Supplier, Runnable, Consumer, CheckedRunnable, CheckedSupplier, CheckedConsumer или CompletionStage с повторной попыткой. "

Как украсить потребительский функциональный интерфейс с помощью Retry в resilience4j

1 Ответ

0 голосов
/ 08 мая 2020

Вы можете сделать

String key = "key";
Runnable runnable = () -> helloWorldService.sayHelloWorldWithName(key);
Decorators
    .ofRunnable(runnable)
    .withRetry(Retry.ofDefaults("id"))
    .run();

или просто

Runnable runnable = () -> helloWorldService.sayHelloWorldWithName(key);
retry.executeRunnable(runnable);
...