如何覆盖Spring Cloud Ribbon中的ribbon.serverListRefreshInterval默认值?

我编写了一个简单的Spring Cloud Ribbon应用程序,用于调用在Eureka中注册的REST服务.

但是如何覆盖ribbon.serverListRefreshInterval值?默认值是30秒,我想减少时间间隔.

提前致谢.

最佳答案
试试:

myService.ribbon.ServerListRefreshInterval=10000

其中myService是目标微服务的名称.

更新:

在挖掘了一些源代码后,我发现LoadBalancerBuilder调用了:

@Deprecated
public ZoneAwareLoadBalancer(IClientConfig clientConfig, IRule rule,
        IPing ping, ServerList<T> serverList, ServerListFilter<T> filter) {
    super(clientConfig, rule, ping, serverList, filter);
}

其超级是:

@Deprecated
public DynamicServerListLoadBalancer(IClientConfig clientConfig, IRule rule, IPing ping, 
        ServerList<T> serverList, ServerListFilter<T> filter) {
    this(
            clientConfig,
            rule,
            ping,
            serverList,
            filter,
            new PollingServerListUpdater()
    );
} 

注意PollingServerListUpdater构造函数:

private static int LISTOFSERVERS_CACHE_REPEAT_INTERVAL = 30 * 1000; // msecs;

public PollingServerListUpdater() {
    this(LISTOFSERVERS_CACHE_UPDATE_DELAY, LISTOFSERVERS_CACHE_REPEAT_INTERVAL);
}

public PollingServerListUpdater(IClientConfig clientConfig) {
    this(LISTOFSERVERS_CACHE_UPDATE_DELAY, getRefreshIntervalMs(clientConfig));
}

第二个允许我们覆盖默认的刷新间隔.然而,它是第一个被调用的,因此它忽略了de property.

更新2:

有一个未解决的问题:https://github.com/spring-cloud/spring-cloud-netflix/issues/1304

转载注明原文:如何覆盖Spring Cloud Ribbon中的ribbon.serverListRefreshInterval默认值? - 代码日志