十、springcloud之Consul注销实例

本文介绍了如何使用Consul API来实现服务实例的状态检查及剔除功能。具体操作包括通过ConsulClient获取服务实例清单,并对非PASSING状态的服务实例进行剔除。
@Autowired  //com.ecwid.consul.v1.ConsulClient
    private ConsulClient consulClient;

    @PostMapping("/clear/{serviceId}")
    public void clear(@PathVariable String serviceId) {
        consulClient.agentServiceDeregister(serviceId);
    }
  • 先通过consulClient.getHealthServices(serviceId, false, null)根据serviceId来获取服务实例清单
  • 遍历实例清单中有不是PASSING状态的实例,就调用client.agentServiceDeregister(serviceId)来剔除
    public void clear(@PathVariable String id) {
            List<HealthService> response = consulClient.getHealthServices(id, false, null).getValue();
            for(HealthService service : response) {
                // 创建一个用来剔除无效实例的ConsulClient,连接到无效实例注册的agent
                ConsulClient clearClient = new ConsulClient(service.getNode().getAddress(), 8500);
                service.getChecks().forEach(check -> {
                    if(check.getStatus() != Check.CheckStatus.PASSING) {
                        logger.info("unregister : {}", check.getServiceId());
                        clearClient.agentServiceDeregister(check.getServiceId());
                    }
                });
            }
        }

    client连接的agent必须是serviceId注册的agent

参考:http://blog.didispace.com/consul-deregister/

转载于:https://www.cnblogs.com/soul-wonder/p/9254203.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值