动态创建多个Ribbon客户端

时间:2018-04-27 18:06:52

标签: java spring spring-cloud spring-cloud-netflix

我有一个spring微服务架构应用程序,但我们没有使用eureka或任何其他服务发现。我的要求是创建一个动态负载均衡器。因此,对于每个服务,将有唯一且动态的服务器集。 配置将类似于:

ribbon:
  listOfServices: say-hello-service, say-hi-service

我不想做的是,为我将使用的每个服务客户端重复@RibbonClient注释。 我发现RibbonClientSpecification是Ribbon工厂的关键组件。如果我使用名称say-hello-service.RibbonClientSpecificationsay-hi-service.RibbonClientSpecification注册它,即使我没有@RibbonClient以及任何与功能区相关的配置,它也会尝试调用相应的服务。所以我的问题是

  1. 为什么@RibbonClient注释是必要的,因为我们可以从定义的属性中识别服务?在我看来,我们必须在属性文件中定义功能区属性,并且具有相同名称的注释,这是多余的。
  2. 如何为我动态创建的每个功能区客户端注册负载均衡器?
  3. 在没有多个@RibbonClient配置类的情况下,动态创建多个功能区客户端的权利是什么?

1 个答案:

答案 0 :(得分:0)

您可以将其用作

@RibbonClient("{services1,service2}")

无需一直为不同的服务指定或创建新的功能区。