Обертывание автоматического выключателя 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))
Другие вопросы по тегам