Обертывание автоматического выключателя Resilience4j вокруг метода службы с несколькими аргументами

Resilience4j-circuitbreaker позволяет нам обернуть сервис с помощью функций-декораторов, но, насколько я могу судить, он допускает только функциональные интерфейсы, такие как Supplier, Consumer и Function, которые принимают не более 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), какую функцию-декоратор можно было бы использовать для этой цели?


person P4L    schedule 14.05.2019    source источник


Ответы (1)


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

CircuitBreaker.decorateCallable(circuitBreaker, () -> service.process(i, s))
person Alexander Pankin    schedule 15.05.2019
comment
Вы можете привести пример? У меня есть служба, которая имеет два входных аргумента и возвращает void. - person stargazer; 05.06.2019
comment
Есть идеи, как использовать с этим запасные варианты? @AlexanderPankin - person Saif Ur Rahman; 29.07.2020