Я использую Feign в своем приложении, чтобы сделать HTTP-вызов.Я также предоставил класс ErrorDecoder, но когда время ожидания истекло, поток не достигает моего класса ErrorDecoder.Что мне здесь не хватает?То, что я хотел бы сделать, это выбросить пользовательскую ошибку из класса errordecoder и затем перехватить ее в GlobalExceptionHandler и вернуть код состояния 408
FeignClient
@FeignClient(name="finacle-service" ,url = "${feign.client.url.finacleUrl}", configuration = FinacleProxyConfig.class)
public interface FinacleProxy {
@PostMapping
String getCif(@RequestBody String request);
@PostMapping
String updateFinaclePns(@RequestBody String request);
}
FeignConfigclass
public class FinacleProxyConfig {
@Bean
public static Logger.Level feignLoggerLevel() {
return Logger.Level.FULL;
}
@Bean
public static Request.Options requestOptions() {
return new Request.Options(3000, 3000);
}
@Bean
public static FinacleErrorDecoder errorDecoder(){
return new FinacleErrorDecoder();
}
}
application.properties
spring.application.name = bds-intgeration-services
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
spring.cloud.services.registrationMethod=direct
logging.level.org.springframework.web.filter.CommonsRequestLoggingFilter=DEBUG
feign.httpclient.disableSslValidation=true
feign.httpclient.enabled=false
feign.okhttp.enabled=true
feign.hystrix.enabled = false
Класс пользовательских ошибок декодера
public class FinacleErrorDecoder implements ErrorDecoder {
private final ErrorDecoder defaultErrorDecoder = new Default();
@Override
public Exception decode(String methodkey, Response response) {
if(response.status() == 408){
return FinacleTimedOutException.builder().message("Request timed out to finacle").build();
}
return defaultErrorDecoder.decode(methodkey, response);
}
}