SpringCloud项目Eureka消费者通过@loadBalanced实现负载均衡时报错:java.lang.IllegalStateException: No instances available for springcloud
Eureka注册中心明明看着有服务名,但是消费者通过restTemplate访问的时候却报错,java.lang.IllegalStateException: No instances available for springcloud
服务消费者:
@RestController
public class ConsumerController {
@Autowired
private RestTemplate restTemplate;
private static final String APPLICATION_NAME = "http://springcloud";
@RequestMapping("/list")
public String list() {
return restTemplate.getForObject(APPLICATION_NAME + "/get", String.class);
}
}
配置类:
@Configuration
public class ConfigBean {
@Bean
@LoadBalanced
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}
消费者配置文件:
server:
port: 9000
eureka:
client:
service-url:
defaultZone: http://eureka7000:7000/eureka/,http://eureka7001:7001/eureka/,http://eureka7002:7002/eureka/
register-with-eureka: false
fetch-registry: false
instance:
prefer-ip-address: true
注册中心看到服务没有问题,注册中心集群也没问题
访问消费者,报错如下:
报错原因:
这句配置的大概意思是不从eureka注册中心获取服务列表,默认为true,这里配置为false所以消费者不从注册中心获取服务列表,所以找不到注册中心的服务
fetch-registry: false
解决办法
消费者配置文件取消上面那句配置