我的spring cloud版本为2022.0.0
、springcloud alibaba版本2022.0.0.0
使用原生的RestTemplate调用已经在nacos注册中心显示的服务就抛出
nacos I/O error on GET request for "http://user-service/user/1": user-service
最终发现是负载均衡错了,解决方法如下
修改依赖
<!-- nacos 服务的注册与发现 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<exclusions>
<!-- 将ribbon排除,spring cloud官方已经不默认使用这个咯-->
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 引入负载均衡,官方默认使用的 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>
修改RestTemplate
@Bean
@LoadBalanced //负载均衡
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.build();
}
然后就可以使用服务名代替ip来发送请求