当我在Web演示中查看RibbonConfig的实现时,我注意到他们总是使用IClientConfig config参数,但是他们从未真正使用过它。例如:

@Autowired
IClientConfig ribbonClientConfig;


@Bean
public IRule ribbonRule(IClientConfig config) { // This parameter is never used
    return new AvailabilityFilteringRule();
}

@Bean
public IPing ribbonPing(IClientConfig config) {
    return new DummyPing();
}


你们知道IClientConfig配置参数用于什么吗?在这种情况下,该方法本身未使用它。

最佳答案

我在Moises Macero的书中找到了一个非常相似的示例:使用Spring Boot学习微服务,一种实用的RESTful方法...例如:

public class RibbonConfiguration {

@Bean
public IPing ribbonPing(IClientConfig config) {
    return new PingUrl(false, "/health");
}

@Bean
public IRule ribbonRule(IClientConfig config) {
    return new AvailabilityFilteringRule();
}}


此配置的范围正在更改默认的功能区负载平衡策略。
此外,我在官方文档中发现了这一点:

@Configuration
class DefaultRibbonConfig {
   @Bean
   public IRule ribbonRule() {
      return new BestAvailableRule();
   }

  @Bean
  public IPing ribbonPing() {
    return new PingUrl();
}

  @Bean
   public ServerList<Server> ribbonServerList(IClientConfig config) {
    return new RibbonClientDefaultConfigurationTestsConfig.BazServiceList(config);
}

 @Bean
 public ServerListSubsetFilter serverListFilter() {
     ServerListSubsetFilter filter = new ServerListSubsetFilter();
     return filter;
  }


}

如您所见,前两种方法没有IClientConfig参数,此处为官方文档:
Customizing the Default for All Ribbon Clients

因此,我返回到配置文件,并删除了IClientConfig参数,该程序仍然有效。
我认为IClientConfig在这一刻是没有用的。
但是您可以参考IClientConfig作者的评论:IClientConfig


  定义各种API用于初始化客户端或负载均衡器的客户端配置
  和方法执行。

07-26 04:08