Настройка FeignClient или ленты только для одного метода

#java

#java

Вопрос:

Я использую Feign в нашем приложении и настраиваю readTimeOut = 30000 , но есть некоторые методы, которые будут вызывать другое приложение для получения большого количества данных, поэтому оно потратит больше времени, как я могу настроить readTimeOut для этих методов?

Ответ №1:

Вы проверили эту страницу?:

https://github.com/OpenFeign/feign/issues/590

Здесь вы можете найти пример, где один пользователь Feign использует тайм-ауты при инициализации ConfigurationManager :

 ConfigurationManager.getConfigInstance()
                .setProperty("hystrix.command.PhotoService#getToken(String,String,String).execution.isolation.thread.timeoutInMilliseconds", 7000);
 return Feign.builder()
                .decoder(new GsonDecoder())
                .encoder(new GsonEncoder())
                .options(new Request.Options(config.getConnectTimeoutMillis(), config.getReadTimeoutMillis()))
                .target(PhotoService.class, baseUrl);
  

Ответ №2:

Вы можете создать пользовательскую конфигурацию для конкретного FeignClien

Более подробная информация здесь: https://cloud.spring.io/spring-cloud-netflix/multi/multi_spring-cloud-feign.html#spring-cloud-feign-overriding-defaults

Например:

 @FeignClient(name = "stores", configuration = FooConfiguration.class)
public interface StoreClient {
 //..
}
  

и создайте компонент с пользовательской конфигурацией ( FooConfiguration.class )

Комментарии:

1. спасибо за ответ! но таким образом, приложение может настроить только один метод, если есть десять методов, их время ожидания различно, как настроить?