关于ribbon:Ribbon-懒加载

58次阅读

共计 878 个字符,预计需要花费 3 分钟才能阅读完成。

Ribbon – 负载平衡流程中提到,serviceId 对应的 AnnotationConfigApplicationContext 在第一次调用的时候才创立(所以叫懒加载),那有可能造成调用的超时,那有没有方法提前加载呢?
在 RibbonAutoConfiguration 类中,有个 RibbonApplicationContextInitializer,如果不须要懒加载,咱们就须要 ribbon.eager-load.enabled 的值为 true。

@Bean
@ConditionalOnProperty("ribbon.eager-load.enabled")
public RibbonApplicationContextInitializer ribbonApplicationContextInitializer() {return new RibbonApplicationContextInitializer(springClientFactory(),
            ribbonEagerLoadProperties.getClients());
}

RibbonApplicationContextInitializer 是实现 ApplicationListener<ApplicationReadyEvent>,所以当上下文筹备好的时候,就会调用 onApplicationEvent 办法,而后持续调用 initialize 办法,所以咱们并不是说 ribbon.eager-load.enabled 的值设置 true 就能够的,还须要设置 clientNames。

protected void initialize() {if (clientNames != null) {for (String clientName : clientNames) {this.springClientFactory.getContext(clientName);
        }
    }
}

为了去掉懒加载,我的配置如下,clients 能够是多个:

ribbon:
  eager-load:
    enabled: true
    clients: eureka-provider

正文完
 0