目前基本使用Feign都是与ribbon结合使用的,最重要的两个超时是连接超时ConnectTimeout和读超时ReadTimeout
下面按优先级从高到低配置
默认配置
在默认配置下,Feign的超时时间配置如下:
public class DefaultClientConfigImpl implements IClientConfig {
public static final int DEFAULT_READ_TIMEOUT = 5000;
public static final int DEFAULT_CONNECT_TIMEOUT = 2000;
从上面一看是2s和5s,但是这是个坑,因为在构造完这个类后,又使用ribbon的配置把默认配置覆盖掉了:
@Bean
@ConditionalOnMissingBean
public IClientConfig ribbonClientConfig() {
DefaultClientConfigImpl config = new DefaultClientConfigImpl();
//此处还将DefaultClientConfigImpl内部的一个属性enableDynamicProperties改成了ture
config.loadProperties(this.name);
config.set(CommonClientConfigKey.ConnectTimeout, DEFAULT_CONNECT_TIMEOUT);
config.set(CommonClientConfigKey.ReadTimeout, DEFAULT_READ_TIMEOUT);
return config;
}
也就说说,默认是使用的ribbon的默认配置,即1s和

本文介绍了Feign与Ribbon结合使用时的超时配置,包括默认配置、Ribbon全局和指定服务配置、Feign全局和指定服务配置,并解析了配置生效的顺序,强调了`ReadTimeout`和`ConnectTimeout`必须同时配置才能生效。
最低0.47元/天 解锁文章
3656

被折叠的 条评论
为什么被折叠?



