Сконфигурированный feign, но по тайм-ауту запроса, он не использует данный класс ErrorDecoder - PullRequest
0 голосов
/ 26 сентября 2019

Я использую 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);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...