使用 Spring boot 和 eureka 的 Resttemplate

Fab*_*ner 1 spring-boot netflix-eureka

我使用 spring-boot 和 eureka 客户端创建一个项目(我的 eureka 服务器中注册了另外 2 个项目),因此要访问我在应用程序中创建的其他 2 个项目,需要创建一个 RestTemplate,如下所示:

@Bean
@LoadBalanced
public RestTemplate restTemplate() {
    return new RestTemplate();
}
Run Code Online (Sandbox Code Playgroud)

所以,现在当我尝试访问我的一个项目时,我只输入“ http://my-project1/ ”或“ http://my-project2/ ”的url,然后尤里卡服务器为我解析该url。

但现在我需要从我的范围之外调用休息(例如邮政编码服务),所以如果我输入:

return restTemplate.getForObject("https://viacep.com.br/ws/11380120/json", String.class);
Run Code Online (Sandbox Code Playgroud)

不起作用,因为 viacep.com 不在我的范围内,可以解决这个问题吗?

小智 6

在这种情况下,您将必须创建另一个未负载平衡的 RestTemplate。

@Bean("rawRestTemplate")
public RestTemplate restTemplate() {
    return new RestTemplate();
}
Run Code Online (Sandbox Code Playgroud)

要调用任何未在 Eureka 中注册的服务,请使用非负载平衡的 RestTemplate。因为,使用负载平衡休息模板,它将始终尝试从 Eureka 注册表解析服务。