restTemplate 填坑记:
最近程序部署调试的时候, restTemplate 调用外部接口 ,一直报错; No instances avaliable for ip地址
后来分析了一下原因:
程序开始在启动类的时候 添加了
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
而我使用时,就是使用这个bean去调用第三方接口, 重点在这里, restTemplate加上负载均衡注解后,就会去注册中心寻找服务. 因为是第三方的服务,所以当然报找不到实例;
解决办法
重新注入一个restTemplate bean; 修改名称,然后获取这个restTemplate去调用第三方接口
@Bean(name="remoteRestTemplate")
public RestTemplate restTemplateRemote() {
return new RestTemplate();
}
protected Class configLaucherClass(){
return DezjManageBootstrap.class;
}
调用的类里面:
@Autowired
@Qualifier(value = "remoteRestTemplate")
private RestTemplate rest;
最后填坑结束!!!

本文记录了一次在使用带有@LoadBalanced注解的restTemplate调用第三方接口时遇到的问题及解决方案。由于restTemplate默认尝试从注册中心查找服务,导致无法正确调用未注册的第三方接口。解决方法是创建一个不带负载均衡的restTemplate bean,并通过@Qualifier注解指定使用该bean进行调用。
1143

被折叠的 条评论
为什么被折叠?



