У меня есть приложение с пружинной загрузкой, которое использует декларативный клиент Feign
@ComponentScan
@EnableFeignClients
@EnableCircuitBreaker
@EnableDiscoveryClient
@EnableZuulProxy
@FeignClient(name = "${service-registry-name}", fallbackFactory = MyFallbackFactory.class, configuration = CommonFeignConfiguration.class)
public interface MyClient {
@RequestMapping(method = RequestMethod.GET, path = "/test/reference/data")
HttpEntity<String> getAllData();}
У меня есть следующее application.yml
feign:
okhttp:
enabled: true
feign:
hystrix:
enabled: true
hystrix:
command:
MyClient#getAllData():
execution:
isolation:
thread:
timeoutInMilliseconds: 30000
hystrix:
command:
default:
execution:
timeout:
enabled: false
logging:
level:
project:
user:
MyClient: DEBUG
feign:
client:
config:
feign-name:
requestInterceptors: com.test.MyRequestHeaderProcessor
Это приложение с весенней загрузкой отлично работает, и когда яотладка я мог видеть, что значение тайм-аута 30000 правильно применяется.
Проблема начинается, когда я использую этот код НЕ в качестве отдельного приложения с пружинной загрузкой, а в качестве jar зависимости в другом проекте.
В это время тайм-аут всегда равен 1000, что является значением по умолчанию.Мне тоже удалось это переопределить.Но, несмотря на это, я получаю HystrixRunTimeException, Timeout with null.
У меня есть feign.hystrix.enabled = true.
Если я использую feign.hystrix.enabled = false, я вижу, чтоМой запрос не истекает, но тогда механизм Fallback не работает.
Но, когда я добавляю атрибут URL в FeignClient, он работает нормально и НЕ работает по таймауту. Я не могу полагаться на атрибут URL, так как он исходит изURL службы облачного литейного производства, который можно изменить.