如何从使用eureka调用其他内部微服务的Spring云微服务调用外部非REST API?

时间:2017-01-20 12:04:24

标签: spring resttemplate netflix-eureka netflix-ribbon

在我们的项目中,我们使用Spring cloud + Eureka作为服务注册表。 当我们使用功能区客户端调用内部微服务时,所有URL都通过Eureka解析...这是调用外部URL的问题。 由于外部API是老式的,使用Feign似乎不是一个好的选择。

从这样的服务调用外部URL的最佳方法是什么?

提前致谢

帕特里斯

2 个答案:

答案 0 :(得分:0)

单向工作: 使用两种配置。

声明你的RestTemplate Bean来调用这样的外部服务:

@Primary
@Qualifier("withoutEureka")
@Bean
public RestTemplate restTemplate(){
...
}

以这种方式在您的客户端中注入此引用

@Bean
public MyClientForExtCall myClientForExtCall(@Qualifier("withoutEureka")RestTemplate restTemplate)

在其他配置中,像往常一样使用restTemplate,但不要忘记使用其他限定符

@LoadBalanced
@Bean
@Qualifier("withEureka")
public RestTemplate loadBalancedEureka(){
...
}

@Bean
public MyClientForInternal myClientForInternal(@Qualifier("withoutEureka")RestTemplate restTemplate)

帕特里斯

答案 1 :(得分:0)

您可以在没有Eureka的情况下使用Ribbon。对于无法在Eureka中配置以抽象发现的外部API。您可以在客户端硬编码其URL并配置服务器列表。功能区客户端默认为已配置的服务器列表,您可以提供如下配置:

stores:
  ribbon:
    listOfServers: example.com, google.com