目錄
微服務:整合 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、運行測試