FeignCircuitBreakerInvocationHandler
public Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable {
....
String circuitName = Feign.configKey(target.type(), method);
CircuitBreaker circuitBreaker = circuitBreakerGroupEnabled ? factory.create(circuitName, feignClientName)
: factory.create(circuitName);
...
}
Now support custom config on method level only!
Feign.configKey(target.type(), method) could be duplicated!
example
@FeignClient(name = "user-service")
public interface UserServiceClient {
@PostMapping("/registration")
ResponseEntity<User> registerUser(@RequestBody User user);
}
resilience4j:
timelimiter:
configs:
default:
timeout-duration: 1ms
instances:
# Feign.configKey(target.type(), method)
# in case of escaped characters, spring boot will apply it to UserServiceClientregisterUserUser
UserServiceClient#registerUser(User):
timeout-duration: 1s