Обертывание автоматического выключателя Resilience4j вокруг сервисного метода с несколькими аргументами
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 ответ
Вы могли бы использовать CircuitBreaker.decorateCallable
:
CircuitBreaker.decorateCallable(circuitBreaker, () -> service.process(i, s))