OpenFeign超时时间设置不生效问题排查记录
OpenFeign超时时间设置不生效问题排查
最近升级springboot 3,突然发现配置文件中的openFeign的超时时间设置不生效了
之前配置
如下:
feign: client: config: default: connectTimeout: 3000 readTimeout: 5000
查资料都是说ribbon或者hystrix的超时时间设置问题,但实际并不是,没办法,去看源码,在FeignClientFactoryBean这个类里的
protected void configureFeign(FeignClientFactory context, Feign.Builder builder) { FeignClientProperties properties = this.beanFactory != null ? (FeignClientProperties)this.beanFactory.getBean(FeignClientProperties.class) : (FeignClientProperties)this.applicationContext.getBean(FeignClientProperties.class); FeignClientConfigurer feignClientConfigurer = (FeignClientConfigurer)this.getOptional(context, FeignClientConfigurer.class); this.setInheritParentContext(feignClientConfigurer.inheritParentConfiguration()); if (properties != null && this.inheritParentContext) { if (properties.isDefaultToProperties()) { this.configureUsingConfiguration(context, builder); this.configureUsingProperties((FeignClientProperties.FeignClientConfiguration)properties.getConfig().get(properties.getDefaultConfig()), builder); this.configureUsingProperties((FeignClientProperties.FeignClientConfiguration)properties.getConfig().get(this.contextId), builder); } else { this.configureUsingProperties((FeignClientProperties.FeignClientConfiguration)properties.getConfig().get(properties.getDefaultConfig()), builder); this.configureUsingProperties((FeignClientProperties.FeignClientConfiguration)properties.getConfig().get(this.contextId), builder); this.configureUsingConfiguration(context, builder); } } else { this.configureUsingConfiguration(context, builder); } }
可以看到配置是从FeignClientProperties这里读的
完后进入这个类,发现注解
@ConfigurationProperties("spring.cloud.openfeign.client")
对比之前的版本,这个类的注解为
@ConfigurationProperties("feign.client")
所以问题很明显了,将配置改为
spring: cloud: openfeign: client: config: default: connectTimeout: 3000 readTimeout: 5000
问题解决
多说两句,其实除了看源码,直接看官网可能更直接一点
https://docs.spring.io/spring-cloud-openfeign/docs/current/reference/html/#timeout-handling
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
java sql ResultSet 之getRow()用法说明
这篇文章主要介绍了java sql ResultSet 之getRow()用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-08-08IDEA项目maven project没有出现plugins和Dependencies问题
这篇文章主要介绍了IDEA项目maven project没有出现plugins和Dependencies问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-12-12IDEA新建springboot项目时未生成pom.xml文件的解决操作
这篇文章主要给大家介绍了关于IDEA新建springboot项目时未生成pom.xml文件的解决操作方法,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2023-02-02Junit 5中@ParameterizedTest与@EnumSource结合使用
今天小编就为大家分享一篇关于Junit 5中@ParameterizedTest与@EnumSource结合使用,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧2018-12-12
最新评论