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

    }
}

現在停掉服務:

 

 

 

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

 

 

 

 

此時注冊中心已經沒該服務了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM