问题:
在通过RestTemplate进行调用其他项目的API时,由于是在本地调本地,产生了No instances available for localhost错误,导致无法调用。
原因:
既然是负载均衡,那必然是多台服务器的负载均衡,用IP访问就没有意义了,因此用负载均衡的注解时,不能用IP或者localhost,而应该用服务名。
RestTemplate的底层错误原因(摘录):
解决方案:
在配置类配置RestTemplate时,分别配置负载均衡与默认优先选择,即写两个RestTemplate方法
@LoadBalanced
@Bean
public RestTemplate loadBalanced1() {
return new RestTemplate();
}
@Primary
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}