zoukankan      html  css  js  c++  java
  • consul注册中心如何自动剔除下线服务

    背景:consul注册中心,对已经下线的服务不会立刻剔除,过了很久才会剔除,这样会导致很多问题,例如a服务明明已经下线,但还在注册中心注册,这样其他服务可能就会访问到该服务

    处理思路:我们可以监听spring的关闭事件,然后在该监听方法中剔除下线的服务即可:

     注册中心已经有2个服务,第二个是我本地启动的服务,那么我们如何剔除它呢:

    @Component
    public class ServiceCloseUnRegisterService {
        @Autowired(required = false)
        private ConsulServiceRegistry consulServiceRegistry;
        @Autowired
        private ConsulRegistration reg;
    
        @EventListener(ContextClosedEvent.class)
        public void doUnRegister(ContextClosedEvent contextClosedEvent){
            System.out.println("这是注册对象。。。。。。。。。。。。。。。"+consulServiceRegistry.getClass());
            if(null!=consulServiceRegistry){
                consulServiceRegistry.deregister(reg);
            }
    
        }
    }

    现在停掉服务:

     

     控制台打印了日志,证明方法被调用到:

    此时注册中心已经没该服务了

  • 相关阅读:
    hadoop
    flume
    IP地址查询
    flinkStreamSQL
    StreamSets
    Algorightm----DynamicProgramming
    google
    vue学习
    使用Webstorm快速启动Vue项目配置
    数据库——关系代数中的除法运算【转】
  • 原文地址:https://www.cnblogs.com/yangxiaohui227/p/15095798.html
Copyright © 2011-2022 走看看