【笔记】SpringBoot 2.7.x Feign超时时间配置问题
- 前言
 - 使用的技术
 - Feign超时配置
 - 处理过程
 
前言
从 SpringBoot 2.3升级至SpringBoot 2.7.x后,Feign的配置也发生了变化。本文主要记录Feign调用超时时间配置问题。
在解决问题前,也查阅过相关资料,可能查询的姿势有问题。一直没有找到正确答案;最终通过查看源码,找到了可以生效的配置。
本文解决方案仅供参考;如果各位有更好的方案,欢迎留言交流🤝。
使用的技术
Spring Boot 2.7.13
 Spring Cloud 2021.0.8
本人使用的是基于 https://start.spring.io/ 在线生成的代码。如果您使用的技术差异过大或没有使用Spring Boot 默认的Feign实现,本文对您解决问题可能没有太大帮助。
Feign超时配置
resilience4j:
  timelimiter:
    configs:
      default:
        timeoutDuration: 101s #示例101秒
 
处理过程
主要是找到对应的配置,然后针对配置进行修改
进入 org.springframework.cloud.openfeign.FeignCircuitBreakerInvocationHandler#invoke
 可以看到默认的超时时间是 1 秒。
 
 根据信息继续查看Resilience4JCircuitBreakerConfiguration,可以发现timeLimiterConfig属性配置。只需要改变这个配置即可。
根据这个信息,继续查看Resilience4JConfigBuilder类的build方法;
 
 找到调用的方法:
 
 可以看到TimeLimiterRegistry接口,TimeLimiterConfig配置就是通过这个接口获取的。
TimeLimiterRegistry是通过Spring注入,直接找到它的默认实例。
 
从它的参数看,可以找到对应的属性配置
 
 进入该配置,可以看到最终需要修改的属性:
 

然后查看对应的yml配置:
 
 最终的yml配置:
resilience4j:
  timelimiter:
    configs:
      default:
        timeoutDuration: 101s
                


















