使用RestTemplate报错java.lang.IllegalStateException: No instances available for localhost

使用restTemplate的时候,报错

之前测试都没有问题,后来突然使用报错。


java.lang.IllegalStateException: No instances available for localhost
	at org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.execute(RibbonLoadBalancerClient.java:75) ~[spring-cloud-netflix-core-1.3.1.RELEASE.jar:1.3.1.RELEASE]
	at org.springframework.cloud.client.loadbalancer.LoadBalancerInterceptor.intercept(LoadBalancerInterceptor.java:55) ~[spring-cloud-commons-1.2.2.RELEASE.jar:1.2.2.RELEASE]
	at org.springframework.http.client.InterceptingClientHttpRequest$InterceptingRequestExecution.execute(InterceptingClientHttpRequest.java:86) ~[spring-web-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.http.client.InterceptingClientHttpRequest.executeInternal(InterceptingClientHttpRequest.java:70) ~[spring-web-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:48) ~[spring-web-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:53) ~[spring-web-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:659) ~[spring-web-4.3.13.RELEASE.jar:4.3.13.RELEASE]

后来查找之后发现。我使用了负载均衡

 */
@Configuration
public class MyConfig {

    @LoadBalanced//负载均衡
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

所有的访问就必须以应用名访问,也就是生产者注册在Eureka中的ID

错误示范原因:直接使用了url进行请求

    @GetMapping("/consumer/product/list")
    public List<Product> list(){
        return restTemplate.getForObject("http://localhost:8001/product/list",List.class)//使用url访问

修改如下:

//MICROSERVICE-PROVIDER即服务名
  @GetMapping("/consumer/product/list")
    public List<Product> list(){
        return restTemplate.getForObject("http://MICROSERVICE-PROVIDER/product/list",List.class) ;
    }

总结:
1、当使用带有负载均衡的restTemplate时,要使用服务名进行访问服务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值