diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aspect/ApplicationFailedEventListener.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aspect/ApplicationFailedEventListener.java
new file mode 100644
index 0000000000..5c219ab095
--- /dev/null
+++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aspect/ApplicationFailedEventListener.java
@@ -0,0 +1,84 @@
+/**
+ * Copyright (c) 2018 人人开源 All rights reserved.
+ *
+ * https://www.renren.io
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.epmet.commons.tools.aspect;
+
+import com.alibaba.fastjson.JSON;
+import com.dingtalk.api.DefaultDingTalkClient;
+import com.dingtalk.api.DingTalkClient;
+import com.dingtalk.api.request.OapiRobotSendRequest;
+import com.dingtalk.api.response.OapiRobotSendResponse;
+import com.epmet.commons.tools.enums.EnvEnum;
+import com.epmet.commons.tools.utils.SpringContextUtils;
+import com.taobao.api.ApiException;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.context.event.ApplicationFailedEvent;
+import org.springframework.cloud.commons.util.InetUtils;
+import org.springframework.context.ApplicationListener;
+import org.springframework.stereotype.Component;
+
+/**
+ * 应用 启动健康检查 通知类
+ * CustomerApplicationRunner
+ *
+ * @author Mark sunlightcs@gmail.com
+ * @since 1.0.0
+ */
+@Component
+public class ApplicationFailedEventListener implements ApplicationListener {
+ private static Logger logger = LogManager.getLogger(ApplicationFailedEventListener.class);
+ @Value("${spring.application.name}")
+ private String appName;
+ @Value("${server.version}")
+ private String version;
+
+ @Override
+ public void onApplicationEvent(ApplicationFailedEvent applicationFailedEvent) {
+ Throwable exception = applicationFailedEvent.getException();
+ EnvEnum currentEnv = EnvEnum.getCurrentEnv();
+ logger.info(currentEnv);
+ if (!EnvEnum.DEV.getCode().equals(currentEnv.getCode()) && !EnvEnum.LOCAL.getCode().equals(currentEnv.getCode())) {
+ sendDingMarkDownMsg(exception);
+ }
+ }
+
+
+ private String getServerIp() {
+ InetUtils inetUtils = SpringContextUtils.getBean(InetUtils.class);
+ return inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
+ }
+
+ private void sendDingMarkDownMsg(Throwable exception) {
+ DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/robot/send?access_token=ffd7c972b0525e249283df1a16b65a8b9d0012601f3a458dfc588c2eac497bb5");
+ OapiRobotSendRequest request = new OapiRobotSendRequest();
+ request.setMsgtype("markdown");
+ OapiRobotSendRequest.Markdown markdown = new OapiRobotSendRequest.Markdown();
+ markdown.setTitle("部署失败通知");
+
+ markdown.setText("部署失败通知 \n" +
+ "> 服务:" + appName + "\n\n" +
+ "> 版本:" + version + "\n\n" +
+ "> 环境:" + EnvEnum.getCurrentEnv().getName() + "\n\n" +
+ "> IP: " + getServerIp() + "\n\n" +
+ "> 异常:" + exception.getMessage() + "\n\n"
+ );
+ request.setMarkdown(markdown);
+ OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
+ at.setIsAtAll(true);
+ request.setAt(at);
+ try {
+ OapiRobotSendResponse execute = client.execute(request);
+ logger.info("=====通知结果===>" + JSON.toJSONString(execute));
+ } catch (ApiException e) {
+ logger.error("sendDingMarkDownMsg exception", e);
+ }
+ }
+
+}
diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aspect/CustomerApplicationRunner.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aspect/ApplicationReadyEventListener.java
similarity index 90%
rename from epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aspect/CustomerApplicationRunner.java
rename to epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aspect/ApplicationReadyEventListener.java
index 4537414335..901163e7ac 100644
--- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aspect/CustomerApplicationRunner.java
+++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aspect/ApplicationReadyEventListener.java
@@ -22,10 +22,9 @@ import com.taobao.api.ApiException;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.ApplicationArguments;
-import org.springframework.boot.ApplicationRunner;
+import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.cloud.commons.util.InetUtils;
-import org.springframework.core.annotation.Order;
+import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
/**
@@ -36,16 +35,15 @@ import org.springframework.stereotype.Component;
* @since 1.0.0
*/
@Component
-@Order(value = 99)
-public class CustomerApplicationRunner implements ApplicationRunner {
- private static Logger logger = LogManager.getLogger(CustomerApplicationRunner.class);
+public class ApplicationReadyEventListener implements ApplicationListener {
+ private static Logger logger = LogManager.getLogger(ApplicationReadyEventListener.class);
@Value("${spring.application.name}")
private String appName;
@Value("${server.version}")
private String version;
@Override
- public void run(ApplicationArguments args) {
+ public void onApplicationEvent(ApplicationReadyEvent applicationReadyEvent) {
EnvEnum currentEnv = EnvEnum.getCurrentEnv();
logger.info(currentEnv);
if (!EnvEnum.DEV.getCode().equals(currentEnv.getCode()) && !EnvEnum.LOCAL.getCode().equals(currentEnv.getCode())) {
@@ -107,4 +105,5 @@ public class CustomerApplicationRunner implements ApplicationRunner {
}
}
+
}