java.net.UnknownHostException: cloud-member 服务找不到
起初我只是简单的想用其他服务调用认证服务生成token,所以我重新创建了一个微服务项目,环境和配置搭好之后,每个服务都能独立执行,但是就在远程调用的时候报错了。
报错:java.net.UnknownHostException: cloud-member
我上网查了一下,
可能的原因有:
- 网络问题:请检查您的网络连接是否正常,确保可以正常访问"cloud-member"。
- Nacos配置错误:请检查您的Nacos配置文件(如application.properties或application.yml),确保"cloud-member"的地址和端口配置正确。
- Nacos服务未启动:请检查Nacos服务是否已经启动,如果没有启动,请先启动Nacos服务
我其他微服务项目可以正常访问,排除网络问题
然后我去看nacos,服务也已经注册上去了
主启动类
@EnableDiscoveryClient 开启了服务注册与发现
@EnableFeignClients 开启了远程调用
1 import org.springframework.boot.SpringApplication; 2 import org.springframework.boot.autoconfigure.SpringBootApplication; 3 import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 4 import org.springframework.cloud.openfeign.EnableFeignClients; 5 6 @SpringBootApplication 7 @EnableDiscoveryClient 8 @EnableFeignClients(basePackages = {"com.xhj.auth.api"}) 9 public class CloudAuthApplication { 10 11 public static void main(String[] args) { 12 SpringApplication.run(CloudAuthApplication.class, args); 13 } 14 15 }
fiegn接口
1 import org.springframework.cloud.openfeign.FeignClient; 2 import org.springframework.web.bind.annotation.GetMapping; 3 4 /** 5 * @Author: xhj 6 * @Date: 2023/10/19/22:32 7 * @Description: 8 */ 9 @FeignClient("cloud-member") 10 public interface AuthFiegn { 11 12 @GetMapping("/member/token/getToken1") 13 String token(); 14 }
nacos:服务也已经注册进去了
然后我就跟换nacos版本 把 2.1.0 换成了 1.4.1
重启项目 还是一样的报错
然后我想试一下直接写固定的ip地址可以不
@FeignClient("127.0.0.1:8080")
发现跑通了,说明openfiegn没有发现服务
然后我查了很多资料,选择了一个我感觉比较靠谱的一个
1 <dependency> 2 <groupId>org.springframework.cloud</groupId> 3 <artifactId>spring-cloud-loadbalancer</artifactId> 4 </dependency>
加入spring-cloud-loadbalancer依赖
重启项目 发现又报新的错误了
java.net.SocketTimeoutException: Read timed out
然后我想着有可能是我电脑问题,我把电脑重启,发现还是不行
天啦,我要崩溃了,放弃了家人们,先睡觉去了
第二天起床,我打开电脑,终于让我解决了
解决办法
加入下面依赖发现可以了
1 <dependency> 2 <groupId>com.alibaba.cloud</groupId> 3 <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> 4 <!-- 排除ribbon的依赖 --> 5 <exclusions> 6 <exclusion> 7 <groupId>org.springframework.cloud</groupId> 8 <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> 9 </exclusion> 10 </exclusions> 11 </dependency> 12 <dependency> 13 <groupId>org.springframework.cloud</groupId> 14 <artifactId>spring-cloud-loadbalancer</artifactId> 15 </dependency>
然后我尝试删掉 spring-cloud-loadbalancer 依赖
神奇的事情发生了,也可以跑通,啊、啊、啊 我要疯了,彻底迷茫了!!!
为什么??? 两个字 缓存