微服務:整合 Spring Cloud Eureka - 服務事件監聽


目錄

   微服務:整合 Spring Cloud Eureka - 注冊中心 Eureka Server 

   微服務:整合 Spring Cloud Eureka - 服務注冊 Eureka Client  

   微服務:整合 Spring Cloud Eureka - 服務發現 DiscoveryClient 

   微服務:整合 Spring Cloud Eureka - 服務消費以及Ribbon簡單使用 

   微服務:整合 Spring Cloud Eureka - 高可用集群  

   微服務:整合 Spring Cloud Eureka - .NET Core Mvc Api (C#) 

   微服務:整合 Spring Cloud Eureka - 服務治理機制  

   微服務:整合 Spring Cloud Eureka - 服務事件監聽  

   微服務:整合 Spring Cloud Eureka - 高級屬性Region、Zone

   微服務:整合 Spring Cloud Eureka - Rest接口文檔 

   微服務:整合 Spring Cloud Eureka - Security 安全保護

一、簡介

  Eureka Server提供了五種服務監聽事件。因為在某些業務場景下,我們需要做一些自定義的擴展。例如:某個微服務掛掉了,我們希望能監聽到,並給管理員發送郵件通知。

二、事件列表

  • EurekaInstanceCanceledEvent: 服務下線事件
  • EurekaInstanceRegisteredEvent: 服務注冊事件
  • EurekaInstanceRenewedEvent: 服務續約事件
  • EurekaRegistryAvailableEvent: eureka注冊中心啟動事件
  • EurekaServerStartedEvent: eureka server啟動時間

三、監聽類:EurekaStateListener.java

1、代碼結構:

 

 2、服務監聽類

package com.demo.register.listener;

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;

@Component
public class EurekaStateListener {

    private final static Logger logger = LoggerFactory.getLogger(EurekaStateListener.class);

    @EventListener
    public void listen(EurekaInstanceCanceledEvent event) {
        logger.info("服務{}已下線", event.getAppName());
        logger.info("server地址信息{}", event.getServerId());
        //TODO 發送郵件
    }

    @EventListener
    public void listen(EurekaInstanceRegisteredEvent event) {
        InstanceInfo instanceInfo = event.getInstanceInfo();
        logger.info("服務{}進行注冊", instanceInfo.getAppName()+ instanceInfo.getHostName() +"  "+ instanceInfo.getIPAddr() +"  "+ instanceInfo.getPort());
    }

    @EventListener
    public void listen(EurekaInstanceRenewedEvent event) {
        logger.info("服務{}進行續約", event.getServerId() +"  "+ event.getAppName());
    }

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

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

}

3、運行測試

 


免責聲明!

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



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