如何从使用 eureka 调用其他内部微服务的 spring 云微服务调用外部非 REST API?
How to call external non REST API from a spring cloud micro-service that use eureka to call other internal micro-service?
在我们的项目中,我们使用 Spring 云 + Eureka 作为服务注册中心。
当我们使用ribbon客户端调用内部微服务时,所有的URL都是通过Eureka解决的……那是调用外部URL的问题。
由于外部 API 是老式的 Feign 用法似乎不是一个好的选择。
从此类服务调用外部 URL 的最佳方式是什么?
提前致谢
帕特里斯
一种工作方式:
使用两种配置。
像这样声明你的 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)
帕特里斯
你可以在没有 Eureka 的情况下使用 Ribbon。对于无法在 Eureka 中配置以抽象发现的外部 API。您可以在客户端硬编码他们的 URL 并配置服务器列表。 Ribbon 客户端默认为已配置的服务器列表,您可以像这样提供配置:
stores:
ribbon:
listOfServers: example.com, google.com
在我们的项目中,我们使用 Spring 云 + Eureka 作为服务注册中心。 当我们使用ribbon客户端调用内部微服务时,所有的URL都是通过Eureka解决的……那是调用外部URL的问题。 由于外部 API 是老式的 Feign 用法似乎不是一个好的选择。
从此类服务调用外部 URL 的最佳方式是什么?
提前致谢
帕特里斯
一种工作方式: 使用两种配置。
像这样声明你的 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)
帕特里斯
你可以在没有 Eureka 的情况下使用 Ribbon。对于无法在 Eureka 中配置以抽象发现的外部 API。您可以在客户端硬编码他们的 URL 并配置服务器列表。 Ribbon 客户端默认为已配置的服务器列表,您可以像这样提供配置:
stores:
ribbon:
listOfServers: example.com, google.com