From b314687d8bca5fe40f256346aab9854366860da2 Mon Sep 17 00:00:00 2001 From: hehy Date: Mon, 18 Sep 2017 11:09:35 +0800 Subject: [PATCH] =?UTF-8?q?1:eureka=20=E7=9B=91=E5=90=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ace-center/pom.xml | 8 +++ .../EurekaInstanceCanceledListener.java | 58 +++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 ace-center/src/main/java/com/github/wxiaoqi/security/center/listener/EurekaInstanceCanceledListener.java diff --git a/ace-center/pom.xml b/ace-center/pom.xml index 16b5c72f..a28e6fb6 100644 --- a/ace-center/pom.xml +++ b/ace-center/pom.xml @@ -41,6 +41,14 @@ org.springframework.boot spring-boot-maven-plugin + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + com.spotify docker-maven-plugin diff --git a/ace-center/src/main/java/com/github/wxiaoqi/security/center/listener/EurekaInstanceCanceledListener.java b/ace-center/src/main/java/com/github/wxiaoqi/security/center/listener/EurekaInstanceCanceledListener.java new file mode 100644 index 00000000..2cd9a17f --- /dev/null +++ b/ace-center/src/main/java/com/github/wxiaoqi/security/center/listener/EurekaInstanceCanceledListener.java @@ -0,0 +1,58 @@ +package com.github.wxiaoqi.security.center.listener; + +import com.netflix.discovery.shared.Applications; +import com.netflix.eureka.EurekaServerContextHolder; +import com.netflix.eureka.registry.PeerAwareInstanceRegistry; +import lombok.extern.slf4j.Slf4j; +import org.springframework.cloud.netflix.eureka.server.event.EurekaInstanceCanceledEvent; +import org.springframework.cloud.netflix.eureka.server.event.EurekaInstanceRegisteredEvent; +import org.springframework.cloud.netflix.eureka.server.event.EurekaInstanceRenewedEvent; +import org.springframework.cloud.netflix.eureka.server.event.EurekaRegistryAvailableEvent; +import org.springframework.context.ApplicationEvent; +import org.springframework.context.ApplicationListener; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; + +import java.util.Objects; + +/** + * 用于监听Eureka服务停机通知 + * + * @author HeHaoyang + * @create 2017-09-12 12:00 + **/ +@Configuration +@Slf4j +@EnableScheduling +public class EurekaInstanceCanceledListener implements ApplicationListener { + + @Override + public void onApplicationEvent(ApplicationEvent applicationEvent) { + //服务挂掉自动通知 + if(applicationEvent instanceof EurekaInstanceCanceledEvent){ + EurekaInstanceCanceledEvent event = (EurekaInstanceCanceledEvent)applicationEvent; + //获取当前Eureka示例中的节点信息 + PeerAwareInstanceRegistry registry = EurekaServerContextHolder.getInstance().getServerContext().getRegistry(); + Applications applications = registry.getApplications(); + //便利获取已注册节点中与当前失效节点ID一致 的节点信息 + applications.getRegisteredApplications().forEach(registryApplication -> { + registryApplication.getInstances().forEach(instance -> { + if(Objects.equals(instance.getInstanceId(),event.getServerId())){ + log.info("服务:{}挂啦。。。",instance.getAppName()); + } + }); + }); + } + if(applicationEvent instanceof EurekaInstanceRegisteredEvent){ + EurekaInstanceRegisteredEvent event = (EurekaInstanceRegisteredEvent)applicationEvent; + log.info("服务:{}注册成功啦。。。",event.getInstanceInfo().getAppName()); + } + if (applicationEvent instanceof EurekaInstanceRenewedEvent) { + EurekaInstanceRenewedEvent event = (EurekaInstanceRenewedEvent) applicationEvent; + log.info("心跳检测服务:{}。。。" ,event.getInstanceInfo().getAppName()); + } + if (applicationEvent instanceof EurekaRegistryAvailableEvent) { + log.info("服务 Aualiable。。。"); + } + } +} -- Gitee