Nacos服务调用时的UnknownHostException问题
一、问题描述
成功安装并运行Nacos,并且可以正常访问。服务可以在Nacos中正常注册和发现,但是在调用服务时出现UnknownHostException错误,具体错误信息如下图所示:

二、解决过程
环境信息
- Spring Cloud 版本:2023.0.0.0-RC1
- Spring Boot 版本:3.2.0
- Nacos 版本:依赖于Spring Cloud 版本
在Spring Cloud 2020.0.1.0之后的版本中,不再使用Netflix组件,因此Ribbon不再用于实现负载均衡。我们需要在消费者服务端添加以下依赖:
具体步骤
1.确保服务注册正常:首先确保所有服务在Nacos中注册和发现都正常,没有任何异常日志。
2.添加必要的依赖:在消费者服务的pom.xml文件中,添加spring-cloud-starter-loadbalancer依赖。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
3.配置Nacos客户端:确保Nacos客户端配置正确,包括Nacos服务器地址和命名空间等信息。以下是一个示例配置:
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.01:8848
4.使用负载均衡注解:在服务调用端,使用Spring Cloud的@LoadBalanced注解配置RestTemplate,以启用负载均衡。
@Bean @LoadBalanced public RestTemplate restTemplate() { return new RestTemplate(); }
示例代码,
服务调用代码示例 ConsumeController :
@RestController @RequestMapping("/api") public class ConsumeController { //调用的服务名 public static final String PAYENT_URL = "http://order-service"; @Autowired RestTemplate restTemplate; @RequestMapping(value = "/add/{str}", method = RequestMethod.GET) public String echo(@PathVariable("str") String str) { System.out.println("str==="+str); return restTemplate.getForObject(PAYENT_URL+"/order/add/" + str, String.class); } }

浙公网安备 33010602011771号