使用DiscoveryClient的getServices()方法获取不到服务名,其他方法也都获取不到
一、背景最近在学习springcloud,在使用customer调用provider时,通过DiscoveryClient获取不到服务名列表,其他方法也获取不到相应的数据,在网上找了好久,终于发现问题所在,在这里总结下!希望对遇到同样问题的小伙伴有帮助!二、代码通过getServices()方法,获取不到已经注册到Eureka中的服务名。@RequestMapping("/client")publ
·
一、背景
最近在学习springcloud,在使用customer调用provider时,通过DiscoveryClient获取不到服务名列表,其他方法也获取不到相应的数据,在网上找了好久,终于发现问题所在,在这里总结下!希望对遇到同样问题的小伙伴有帮助!
二、代码
通过getServices()方法,获取不到已经注册到Eureka中的服务名。
@RequestMapping("/client")
public String client(){
List<String> services = discoveryClient.getServices();
for (String service:services){
System.out.println(service);
}
ServiceInstance provider = loadBalancerClient.choose("provider");
return provider.toString();
}
通过RestTemplater和服务名称调用也提示找到服务实例
@RequestMapping("/feginGetHell")
public String feginGetHell(){
String url = "http://provider/getHello";
String forObject = restTemplate.getForObject(url, String.class);
return forObject;
}
三、总结
在网上找了好久,才找到原因,最后才发现原来是因为配置文件的问题
这个是之前配置,之前fetch-registry: 配置成了false
eureka:
client:
register-with-eureka: true #表示此实例是否注册到 Eureka Server 以供其他实例发现
fetch-registry: false #表示客户端是否从 Eureka Server 获取实例注册信息
service-url:
defaultZone: http://eureka1.com:9001/eureka/
instance:
metadata-map:
test: this is self define data #自定义数据
修改后的配置
eureka:
client:
register-with-eureka: true #表示此实例是否注册到 Eureka Server 以供其他实例发现
fetch-registry: true #表示客户端是否从 Eureka Server 获取实例注册信息
service-url:
defaultZone: http://eureka1.com:9001/eureka/
instance:
metadata-map:
test: this is self define data #自定义数据
修改完后就能获取到数据了:
小编也有自己微信公众号:“JAVA菜鸟程序猿”,喜欢的可以关注下哦!
更多推荐
已为社区贡献2条内容
所有评论(0)