SpringCloud中服务发现Discovery基础使用
1.由于Discovery是SpringCloud中Eureka的组件所以在使用之前需要配置相关依赖 cloud版本为:Hoxton.SR1 并且在该工程下的SpringBoot主启动类中加入@EnableDiscoveryClien注解 yml文件中也需要配置instance 代码如下<dependency><groupId>org.springframework.clo
1.由于Discovery是SpringCloud中Eureka的组件所以在使用之前需要配置相关依赖 cloud版本为:Hoxton.SR1 并且在该工程下的SpringBoot主启动类中加入@EnableDiscoveryClien注解 yml文件中也需要配置instance 代码如下
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
eureka:
#还需要配置其他的信息 根据需要自行配置
instance:
instance-id: payment8001
prefer-ip-address: true #访问路径可以显示IP
2.为了在控制台中打印出Discovery的信息所以在Controller类上引入了@Sl4j注解 并且使用@Autowired或者是@Resoucre 二选一的方式进行注入 (required = true) 的意思是不允许null值
@Autowired(required = true)
private DiscoveryClient discoveryClient;//服务的发现
3.注入后写一个discovery的方法 通过刚刚注入的discoveryClient来调用它的一些方法 例如以下代码 getServices(); 就是获取当前工程中的微服务被注册到注册中心中有哪些
@GetMapping("/payment/discovery")
public Object discoveryClient(){
//获取当前在注册中心中的服务名称
List<String> services = discoveryClient.getServices();
for (String service : services) {
log.info("**service**:"+service);
}
List<ServiceInstance> instances = discoveryClient.getInstances("CLOUD-PAYMENT-SERVICE");
for (ServiceInstance instance : instances) {
log.info(instance.getInstanceId()+"\t"+instance.getServiceId()+"\t"+instance.getHost()+"\t"+instance.getPort()+"\t"+instance.getUri());
}
return this.discoveryClient;
}
4.up这里提前写好了注册中心 可以看到 注册中心中有两个微服务 一个是cloud-consumer-order-80 一个是cloud-payment-service
5.然后当浏览器url地址栏中访问这个/payment/discovery地址来访问 此时控制台会打印 discover.getServices(); 这个方法遍历的服务信息 简单来说就是打印注册中心这两个服务的名称如下代码
6.除此之外还从上图代码中我们还可以看到通过discoveryClient还调用了一个getInstance("CLOUD-PAYMENT-SERVICE")这个方法是通过服务名来获取的Instances的信息并且在控制台中通过日志的方式打印 如下代码图
(1)getInstanceId():是我们在yml配置文件中设置的值 并eureka界面中显示的自定义格式 up设置eureka界面的自定义格式为payment8001/payment8002因为是一个微服务两个提供方 彼此之间有联系 所以打印了两条
(2)getServiceId:这个不用多说 就是获取当前服务名称
(3)getHost:获取的是主机地址
(4)getPort:获取的是当前服务的端口号
(5)getUri:获取的是统一资源标识
更多推荐
所有评论(0)