场景spring cloud 使用Eureka当注册中心
项目结构如下
在搭建集群完成后发现 eureka 客户端的服务名称不对 发现服务名称不对后我的第一直觉让我觉得是我的spring.application没有配置好 但发现spring.application是正确的 然后我就使用instance.appname修改了实例的服务名称 在准备使用RestTemplate负载均衡测试的时候发现 控制台发生了报错
No instances available for XXX
错误说是没有找到实例 但是 eureka客户端显示已经注册上了
通过查找资料发现造成这个错误的原因有: 1.jar导入错误 2.实例名称错误 3.yml编写错误
根据我的排除发现jar包和yml都没有出现错误 然后我就怀疑是不是注册ip出现错误导致访问不到,
我就通过discoveryClient获取到了所有的服务名称 但是根据名称还是查找不到实例 第二种实例名
称错误也就排除了 后来我就在想这个实例的服务的注册名称是根据spring.application.name 决定的
根据最开始没有设置instance.appname的名称我发现注册实例的名称都是cloud-api-com也就是我
的公共api包 所以我排查发现cloud-api-com中的application.yml配置了spring.application.name 也
就导致了 所有安装这个包的项目都使用了cloud-api-com注册 删除其中的名称再次启动 问题解决
可能会引起错误的情况有以下四种 1.jar导入错误 2.实例名称错误 3.yml编写错误 4.导入的通用项目类已经设置了spring.application.name