Обертывание автоматического выключателя Resilience4j вокруг сервисного метода с несколькими аргументами - PullRequest
1 голос
/ 14 мая 2019

Resilience4j-circuitbreaker позволяет нам оборачивать сервис, используя функции декоратора, но из того, что я могу сказать, он допускает только функциональные интерфейсы, такие как Поставщик, Потребитель и Функция, которые принимают не более 1 входа.

Если у меня есть служба, у которой есть метод, который принимает 2 аргумента, как я могу обернуть его с помощью автоматического выключателя?

В https://www.baeldung.com/resilience4j:

interface RemoteService {
    int process(int i);
}

CircuitBreakerRegistry registry = CircuitBreakerRegistry.of(config);
CircuitBreaker circuitBreaker = registry.circuitBreaker("my");
Function<Integer, Integer> decorated = CircuitBreaker
  .decorateFunction(circuitBreaker, service::process);

Если бы процесс (int i) был чем-то похожим на процесс (int i, String s), какую функцию декоратора можно было бы использовать для этой цели?

1 Ответ

1 голос
/ 15 мая 2019

Вы можете использовать CircuitBreaker.decorateCallable:

CircuitBreaker.decorateCallable(circuitBreaker, () -> service.process(i, s))
...