将Resilience4j断路器包装在具有多个参数的服务方法周围

时间:2019-05-14 13:51:27

标签: spring-boot resilience4j

Resilience4j-circuitbreaker允许我们使用装饰器函数包装服务,但是据我所知,它仅允许接受最多1个输入的功能接口,例如Supplier,Consumer和Function。

如果我有一个服务,该服务的方法可以接受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);

如果process(int i)类似于process(int i,String s),那么哪个装饰函数可以用于此目的?

1 个答案:

答案 0 :(得分:0)

您可以使用CircuitBreaker.decorateCallable

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