zoukankan      html  css  js  c++  java
  • Consul注销实例

    @RestController
    public class DeleteConsulController {
      private static Logger log = LoggerFactory.getLogger(DeleteConsulController.class);
      @Autowired
      private ConsulClient consulClient;

      /**
      * 获取所有服务
      */
      //@ApiOperation(value="剔除所有无效的服务实例", notes="剔除所有无效的服务实例")
      @RequestMapping(value="/allservicer",method=RequestMethod.GET)
      public void getAllServicer(){
        log.info("***********************consul上无效服务清理开始*******************************************");
        //获取所有的members的信息
        List<Member> members = consulClient.getAgentMembers().getValue();
        for (int i=0; i<members.size(); i++){
          //获取每个member的IP地址
          String address = members.get(i).getAddress();
          log.info("member的IP地址为:{}",address);
          //根据role变量获取每个member的角色 role:consul---代表服务端 role:node---代表客户端
          String role = members.get(i).getTags().get("role");
          log.info("{}机器的role为:{}=====注释*role为consul代表服务端 role为node代表客户端",address,role);
          //判断是否为client
          if (role.equals("node")){
            //将IP地址传给ConsulClient的构造方法,获取对象
            ConsulClient clearClient =new ConsulClient(address);
            //根据clearClient,获取当前IP下所有的服务 使用迭代方式 获取map对象的值
            Iterator<Map.Entry<String,Service>> it =clearClient.getAgentServices().getValue().entrySet().iterator();
            while (it.hasNext()){
              //迭代数据
              Map.Entry<String,Service> serviceMap = it.next();
              //获得Service对象
              Service service = serviceMap.getValue();
              //获取服务名称
              String serviceName = service.getService();
              //获取服务ID
              String serviceId = service.getId();
              log.info("在{}客户端上的服务名称 :{}**服务ID:{}",address,serviceName,serviceId);
              //根据服务名称获取服务的健康检查信息
              Response<List<Check>> checkList =consulClient.getHealthChecksForService(serviceName,null);
              List<Check> checks = checkList.getValue();
              //获取健康状态值 PASSING:正常 WARNING CRITICAL UNKNOWN:不正常
              Check.CheckStatus checkStatus = checks.get(0).getStatus();
              log.info("在{}客户端上的服务 :{}的健康状态值:{}",address,serviceName,checkStatus);
              if(serviceName.equals("wholesale-merchantmgr-service")){
              log.info("wholesale-merchantmgr-service is going to die!" );
        }

      /*if (checkStatus != Check.CheckStatus.PASSING){
      log.info("在{}客户端上的服务 :{}为无效服务,准备清理...................",address,serviceName);
      clearClient.agentServiceDeregister(serviceId);
    }*/
    }
    }
    }
    }
    }

  • 相关阅读:
    课二 计算机硬件组成余下
    课一 计算机硬件组成
    电梯演讲视频
    团队成员个人介绍
    day-65Django
    day-64Django
    day-63Django
    day-62Django
    day-61Django
    day-60Django
  • 原文地址:https://www.cnblogs.com/daishiwen/p/8780990.html
Copyright © 2011-2022 走看看