Resttemplate 与 Spring boot 和 eureka
Resttemplate with Spring boot and eureka
我用 spring-boot 和一个 eureka 客户端创建了一个项目(我在我的 eureka 服务器上注册了另外 2 个项目),所以要访问我在我的应用程序中创建的其他 2 个项目,一个 RestTemplate 就像这个:
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
所以,现在当我尝试访问我的一个项目时,我只输入 url“http://my-project1/" or "http://my-project2/”,eureka 服务器为我解析 url。
但现在我需要从我的范围之外调用 rest(例如邮政编码服务)所以如果我输入:
return restTemplate.getForObject("https://viacep.com.br/ws/11380120/json", String.class);
不起作用,因为 viacep.com 不在我的范围内,是否可以解决这个问题?
在这种情况下,您将不得不创建另一个负载不平衡的 RestTemplate。
@Bean("rawRestTemplate")
public RestTemplate restTemplate() {
return new RestTemplate();
}
要调用任何未在您的 Eureka 中注册的服务,请使用非负载平衡 RestTemplate。因为,使用负载平衡的 rest 模板,它将始终尝试从 Eureka 注册表解析服务。
我用 spring-boot 和一个 eureka 客户端创建了一个项目(我在我的 eureka 服务器上注册了另外 2 个项目),所以要访问我在我的应用程序中创建的其他 2 个项目,一个 RestTemplate 就像这个:
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
所以,现在当我尝试访问我的一个项目时,我只输入 url“http://my-project1/" or "http://my-project2/”,eureka 服务器为我解析 url。
但现在我需要从我的范围之外调用 rest(例如邮政编码服务)所以如果我输入:
return restTemplate.getForObject("https://viacep.com.br/ws/11380120/json", String.class);
不起作用,因为 viacep.com 不在我的范围内,是否可以解决这个问题?
在这种情况下,您将不得不创建另一个负载不平衡的 RestTemplate。
@Bean("rawRestTemplate")
public RestTemplate restTemplate() {
return new RestTemplate();
}
要调用任何未在您的 Eureka 中注册的服务,请使用非负载平衡 RestTemplate。因为,使用负载平衡的 rest 模板,它将始终尝试从 Eureka 注册表解析服务。