由于ribbon是懒加载的,所以首次调用需要做ribbon的初始化工作。所以可能会出现超时。
在RibbonAutoConfiguration类中
@Bean
@ConditionalOnProperty(value = "ribbon.eager-load.enabled")
public RibbonApplicationContextInitializer ribbonApplicationContextInitializer() {
return new RibbonApplicationContextInitializer(springClientFactory(),
ribbonEagerLoadProperties.getClients());
}
在RibbonEagerLoadProperties类中默认为懒加载
@ConfigurationProperties(prefix = "ribbon.eager-load")
public class RibbonEagerLoadProperties {
private boolean enabled = false;
private List<String> clients;
public boolean isEnabled() {
return enabled;
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
public List<String> getClients() {
return clients;
}
public void setClients(List<String> clients) {
this.clients = clients;
}
}
解决办法,配置ribbon的饥饿加载。
ribbon:
eager-load:
enabled: true
clients: eureka-provider