如果我们想获得在eureka上注册的服务的信息,比如服务名称、端口号之类的信息,需要用到服务发现Discovery。
一、在服务上增加DiscoveryClient属性
在8001和8002服务的PaymentController类里增添DiscoveryClient属性
@Autowired
private DiscoveryClient discoveryClient;
二、再写一个方法用来在浏览器和后台返回服务的信息
@GetMapping(value = "/payment/discovery")
public Object getDiscovery(){
List<String> services = discoveryClient.getServices();
for (String element : services) {
log.info("======element:"+element);
}
List<ServiceInstance> instances = discoveryClient.getInstances("CLOUD-PAYMENT-SERVICE");
for (ServiceInstance instance : instances) {
log.info(instance.getServiceId() + "\t" + instance.getHost() + "\t"
+ instance.getPort() + "\t"+ instance.getUri());
}
return this.discoveryClient;
}
三、在主启动类上增加@EnableDiscoveryClient注解
四、8002服务与8001服务的改动一致
五、运行测试
浏览器地址栏输入
http://localhost:8001/payment/discovery
可以看出打印出服务的各种信息