SpringCloud中服务发现Discovery基础使用

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:获取的是统一资源标识

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值