目前基本使用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_TIME