写在前面:后续的文章都是基于第一篇文章进行更新,我是按照SpringCloud学习顺序进行文章编写,因为项目只有一个项目,需要了解SpringCloud前面skill的可以看一下前面SpringCloud体系。
对于注册到注册中心的服务,我们是可以获取到这个服务信息。获取的方式就是通过服务服务发现。使用很简单,还是在之前项目的基础上进行更改
对我们的部门服务的启动类加上注解@EnableDiscoveryClient
在我们的服务模块的Controller层加上服务发现的服务
@RequestMapping(value = "/dept/discovery", method = RequestMethod.GET)
public Object discovery()
{
List<String> list = client.getServices();
System.out.println("**********" + list);
List<ServiceInstance> srvList = client.getInstances("MICROSERVICECLOUD-DEPT");
for (ServiceInstance element : srvList) {
System.out.println(element.getServiceId() + "\t" + element.getHost() + "\t" + element.getPort() + "\t"
+ element.getUri());
}
return this.client;
}
访问地址 : http://localhost:8001/dept/discovery
返回结果:
{"services":["microservicecloud-dept"],"localServiceInstance":{"host":"192.168.3.227","port":8001,"serviceId":"microservicecloud-dept","metadata":{},"uri":"http://192.168.3.227:8001","secure":false}}
当然也可以通过消费者去调用这个服务。
在消费者端的controller层加上
//测试@EnableDiscoveryClient,消费端可以调用服务发现
@RequestMapping(value="/consumer/dept/discovery")
public Object discovery()
{
return restTemplate.getForObject(REST_URL_PREFIX+"/dept/discovery", Object.class);
}
通过访问消费者的接口,去实现服务发现的接口调用。
访问方式和结果如下:
访问地址: http://localhost/consumer/dept/discovery
访问结果:
{"services":["microservicecloud-dept"],"localServiceInstance":{"host":"192.168.3.227","port":8001,"serviceId":"microservicecloud-dept","metadata":{},"uri":"http://192.168.3.227:8001","secure":false}}。
以上就是SpringCloud的服务发现的简单介绍。