对于注册进eureka server里面的微服务,可以通过服务发现来获得该服务的信息。
就是cloud-provider-payment8001和8002 provider都注册进了eureka注册中心,假设消费者80想看看这些端口号和服务名,那么应该怎么才取得到信息?
那么怎么实现了?
添加cloud-provider-payment8001中的controller
注意导包import org.springframework.cloud.client.discovery.DiscoveryClient;
@Resource
private DiscoveryClient discoveryClient;
@GetMapping("/payment/discovery")
public Object discovery(){
List<String> services = discoveryClient.getServices();//获得服务列表的信息
services.forEach(elem->{
log.info("element:"+elem);
});
List<ServiceInstance> instances = discoveryClient.getInstances("CLOUD-PAYMENT-SERVICE");//获得对外暴露服务名称的id
instances.forEach(instance ->{
log.info(instance.getInstanceId()+"\t"+instance.getHost()+"\t"+instance.getPort()+"\t"+instance.getUri());
});
return discoveryClient;
}
在主启动类添加@EnableDiscoveryClient
启动服务
去浏览器发送请求地址
去后台看一下打印输出日志