对于consul的查询无效实例并清除
@RestController
public class ApiController {
private static Logger log = LoggerFactory.getLogger(ApiController.class);
@Autowired
private ConsulClient consulClient;
/**
* 剔除所有无效的服务实例
*/
@RequestMapping(value = "/CheakCleanService", method = RequestMethod.GET)
public void CheakCleanService() {
log.info("***********************consul上无效服务清理开始*******************************************");
//获取所有的services检查信息
Iterator<Map.Entry<String, Check>> it = consulClient.getAgentChecks().getValue().entrySet().iterator();
Map.Entry<String, Check> serviceMap = null;
while (it.hasNext()) {
//迭代数据
serviceMap = it.next();
//获取服务名称
String serviceName = serviceMap.getValue().getServiceName();
//获取服务ID
String serviceId = serviceMap.getValue().getServiceId();
log.info("服务名称 :{}**服务ID:{}", serviceName, serviceId);
//获取健康状态值 PASSING:正常 WARNING CRITICAL UNKNOWN:不正常
log.info("服务 :{}的健康状态值:{}", serviceName, serviceMap.getValue().getStatus());
if ( serviceMap.getValue().getStatus() == Check.CheckStatus.CRITICAL) {
log.info("服务 :{}为无效服务,准备清理...................", serviceName);
consulClient.agentServiceDeregister(serviceId);
}
}
}
}