1

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

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

提前致谢

帕特里斯

4

2 回答 2

1

一种工作方式:使用两种配置。

声明您的 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)

帕特里斯

于 2017-01-20T13:58:43.993 回答
0

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

stores:
  ribbon:
    listOfServers: example.com, google.com
于 2017-12-04T19:31:31.083 回答