天天看點

Eureka 注冊、下線、續約事件的監聽使用

前言

看圖:

Eureka 注冊、下線、續約事件的監聽使用

現在開發節奏如此緊張,大多數人為了跟得上靈活的節奏,也就無形中丢掉了對技術整合的更多的拓展學習。

那麼,我選擇 小白文科普。

不管這些東西是否簡單還是複雜,隻要存在有人為了解,那麼我就發文,至少能讓我的看客都知道還有一些有緣的看客知道。

正文

直接看源碼:

InstanceRegistry.java 

Eureka 注冊、下線、續約事件的監聽使用

ps: 還有很多人不會看源碼 ,例如想找 InstanceRegistry 這個代碼,idea 操作大緻就是這樣:

Eureka 注冊、下線、續約事件的監聽使用

回到剛才的内容,可以看到 InstanceRegistry裡面很多方法,

register

cancel : 下線 ,client項目 突然挂了或者沒了,觸發調用的方法

renew

我們直接拿 register方法看 ,

Eureka 注冊、下線、續約事件的監聽使用

handleRegistration :

Eureka 注冊、下線、續約事件的監聽使用

 再看一個cancel:

Eureka 注冊、下線、續約事件的監聽使用

renew 也是 :

Eureka 注冊、下線、續約事件的監聽使用

那麼到這,其實我們如果了解spring的 事件釋出 ,那麼看到這裡,你已經知道怎麼玩這些事件了。

但是未免有的看客就是沒了解,那麼沒關系 ,可以往下看,或者直接看我這篇 :

SpringBoot 事件釋出監聽機制使用、分析、注意點 (一篇到位)_默默不代表沉默_springboot 事件監聽

那麼我們直接上代碼:

MyStateListener.java

import com.netflix.appinfo.InstanceInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.netflix.eureka.server.event.*;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;

/**
 * @Author JCccc
 * @Description
 * @Date 2020/09/10 9:22
 */
@Component
public class MyStateListener {

    private final static Logger log = LoggerFactory.getLogger(MyStateListener.class);

    @EventListener
    public void registerListen(EurekaInstanceRegisteredEvent event) {
        InstanceInfo instanceInfo = event.getInstanceInfo();
        log.info("服務名={}注冊上來了", instanceInfo.getAppName());
        log.info("服務的host名={}",instanceInfo.getHostName());
        log.info("服務的ip位址={}",instanceInfo.getIPAddr());
        log.info("服務的端口={}",instanceInfo.getPort());
        log.info("做一些【注冊】相關的業務邏輯......");
        log.info("做一些【注冊】相關的業務邏輯......");
    }

    @EventListener
    public void canceledListen(EurekaInstanceCanceledEvent event) {

        log.info("服務名={}下線了", event.getAppName());
        log.info("server位址資訊{}", event.getServerId());
        log.info("做一些【下線】相關的業務邏輯......");
        log.info("做一些【下線】相關的業務邏輯......");
    }

    @EventListener
    public void renewedListen(EurekaInstanceRenewedEvent event) {
        log.info("服務名={}進行續約", event.getServerId() +"  "+ event.getAppName());
        log.info("做一些【續約】相關的業務邏輯......");
        log.info("做一些【續約】相關的業務邏輯......");
    }

    @EventListener
    public void listen(EurekaRegistryAvailableEvent event) {
        log.info("注冊中心啟動,{}", System.currentTimeMillis());
    }

    @EventListener
    public void listen(EurekaServerStartedEvent event) {
        log.info("注冊中心服務端啟動,{}", System.currentTimeMillis());
    }

}      

代碼簡單的介紹:

其實也沒什麼也就一個 @EventListener 注解, 然後配合 我們需要監聽的事件就行 

EurekaInstanceRegisteredEvent

EurekaInstanceCanceledEvent

EurekaInstanceRenewedEvent

Eureka 注冊、下線、續約事件的監聽使用
Eureka 注冊、下線、續約事件的監聽使用

執行一下看看效果:

注冊:

Eureka 注冊、下線、續約事件的監聽使用

續約:

Eureka 注冊、下線、續約事件的監聽使用

下線:

Eureka 注冊、下線、續約事件的監聽使用