zoukankan      html  css  js  c++  java
  • 十、springcloud之Consul注销实例

    @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/

  • 相关阅读:
    使windows server 2003 开机不显示登录页面
    G
    D
    三分求函数极值详解
    H
    G
    E
    D
    A
    B
  • 原文地址:https://www.cnblogs.com/soul-wonder/p/9254203.html
Copyright © 2011-2022 走看看