Netflix功能区与Spring添加多个客户端

时间:2017-03-07 17:01:05

标签: spring netflix netflix-feign netflix-ribbon

我的应用程序连接多个REST API。

我成功地为我的应用程序添加了一个Ribbon Client / Load Balance,用于其中一个具有自己的服务器列表的API

现在我想添加第二个客户端来保存第二个API的服务器列表。

为了定义Archaius用来加载特定属性的客户名,我添加了以下属性。

ribbon.client.name=myFirstClientName

我的问题是:如何在同一个应用程序中定义另一个客户端?

我认为这将是一个以逗号分隔的列表,如:

ribbon.client.name=myFirstClientName,mySecondClientName

但是,这不起作用。

最终,我希望最终得到两个服务器列表,例如

myFirstClientName.ribbon.listOfServers=<ip>,<ip>
mySecondClientName.ribbon.listOfServers=<ip>,<ip>

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

我能够通过在为Feign创建的界面上添加@RibbonClient注释来使其工作。

结果类将是

@FeignClient("http://myFirstClientName/")
@RibbonClient(value = "myFirstClientName", configuration = MyFirstClientConfig.class)
public interface MyFirstFeignService {

第二个客户将是:

@FeignClient("http://mySecondClientName/")
@RibbonClient(value = "mySecondClientName", configuration = MySecondClientConfig.class)
public interface MySecondFeignService {

然后我当然会设置我的两个服务器ips列表

myFirstClientName.ribbon.listOfServers=<ip>,<ip>
mySecondClientName.ribbon.listOfServers=<ip>,<ip>

PS:确保您的配置类 - 上面的MySecondClientConfig和MyFirstClientConfig不在ApplicationContext上。不要让它被某个@ComponentScan捕获,否则它将无效。