SpringCloud--服务发现Discovery

功能:

对于注册进euerka里面的微服务,可以通过服务发现来获得该服务的信息

简单来说:服务发现有三个角色,服务提供者、服务消费者和服务中介。
服务中介是联系服务提供者和服务消费者的桥梁。
服务提供者将自己提供的服务地址注册到服务中介,服务消费者从服务中介那里查找自己想要的服务地址,然后使用这个服务。
服务中介提供多个服务,每个服务对应多个服务提供者。服务中介就是一个字典,字典里有很多key-value键值对,key是服务名称,value是服务提供者的地址列表。服务注册就是调用字典的put方法放东西,服务查找就是调用字典的get方法获取东西
当服务提供者新加入时,要求服务中介能及时告知服务消费者。

步骤:
一、修改cloud-provider-payment8001的controller

@RestController
@Slf4j
public class PaymentController {
    @Resource
    private PaymentService paymentService;

    @Value("${server.port}")
    private String serverPort;

    /**
     * 通过服务发现来获取该服务信息
     */
    @Resource
    private DiscoveryClient discoveryClient;

    @PostMapping(value = "/payment/create")
    public CommonResult Create(@RequestBody Payment payment){
        int result=paymentService.create(payment);
        log.info("插入结果------"+result);
        if(result>0){
            return new CommonResult(200,"插入成功,serverPort"+serverPort,result);
        }else {
            return new CommonResult(404,"插入失败 ",null);
        }
    }
    @GetMapping(value = "/payment/get/{id}")
    public CommonResult getPaymentId(@PathVariable("id") Long id){
        Payment payment=paymentService.getPaymentById(id);
        log.info("插入结果------"+payment);
        if(payment!=null){
            return new CommonResult(200,"查询成功,serverPort"+serverPort,payment);
        }else {
            return new CommonResult(404,"查询失败 ",null);
        }
    }

    @GetMapping(value = "/payment/discovery")
    public Object discovery(){
        /**
         * 获取服务列表的信息实例
         */
        List<String> services=discoveryClient.getServices();
        for (String element: services
             ) {
            log.info("************"+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;
    }
}

二、修改8001主启动类
添加注解@EnableDiscoveryClient

@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
public class PaymentMain8001 {

    public static void main(String[] args) {
        SpringApplication.run(PaymentMain8001.class,args);
    }
}

三、启动服务

查看控制台所输出的数据。
在这里插入图片描述
浏览器输出效果图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值