• 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);
            }
    
        }
    }

    现在停掉服务:

     

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

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

  • 相关阅读:
    java中的四种内部类
    09_TomCat_基础知识
    08_XML的解析_SAX解析
    IO流07_输入输出流总体系
    IO流06_处理流
    IO流05_OutputStream和Writer输出流
    IO流04_InputStream和Reader输入流
    IO流03_流的分类和概述
    IO流02_文件过滤器
    IO流01_File类
  • 原文地址:https://www.cnblogs.com/yangxiaohui227/p/15095798.html
Copyright © 2020-2023  润新知