如何在代码中配置Feign超时时间(不使用application.yml文件)
Feign代码配置超时时间方案
当然可以通过代码方式配置Feign的超时时间,和你配置日志级别的思路一致,通过在配置类中定义对应的Bean即可,分为全局配置和单个FeignClient专属配置两种场景:
1. 全局超时配置(所有FeignClient生效)
创建全局配置类,定义Request.Options类型的Bean,该配置会作用于所有Feign客户端:
@Configuration public class GlobalFeignConfig { @Bean public Request.Options feignRequestOptions() { // 参数分别为:连接超时时间(毫秒)、读取超时时间(毫秒) return new Request.Options(10000, 30000); } }
2. 单个FeignClient专属超时配置
如果只需要给特定的Feign客户端设置超时,可单独创建配置类,然后在@FeignClient注解中指定该配置:
专属配置类
@Configuration public class CustomFeignClientConfig { @Bean public Request.Options customFeignRequestOptions() { // 针对该客户端设置更短的超时:连接5秒,读取15秒 return new Request.Options(5000, 15000); } }
关联到指定FeignClient
@FeignClient(name = "target-service", configuration = CustomFeignClientConfig.class) public interface TargetServiceFeignClient { // 定义Feign接口方法 @GetMapping("/api/data") String fetchData(); }
补充:通过Feign.Builder配置
也可以通过Feign.Builder的Bean来配置超时,这种方式同样支持全局或局部配置:
@Bean public Feign.Builder feignBuilder() { return Feign.builder() .options(new Request.Options(10000, 30000)); }
说明:
Request.Options的两个参数分别控制连接超时(建立HTTP连接的最大等待时间)和读取超时(等待服务端响应的最大时间),单位均为毫秒。
内容的提问来源于stack exchange,提问作者John Little
相关产品推荐
相关产品推荐

