From 3b87cd648f4cb6dd17a6c8372f4ebfb999a15517 Mon Sep 17 00:00:00 2001 From: jianjun Date: Wed, 15 Sep 2021 18:23:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=AF=E5=8A=A8=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ApplicationReadyEventListener.java | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 tduck-api/src/main/java/com/tduck/cloud/api/handler/ApplicationReadyEventListener.java diff --git a/tduck-api/src/main/java/com/tduck/cloud/api/handler/ApplicationReadyEventListener.java b/tduck-api/src/main/java/com/tduck/cloud/api/handler/ApplicationReadyEventListener.java new file mode 100644 index 0000000..4ad69b1 --- /dev/null +++ b/tduck-api/src/main/java/com/tduck/cloud/api/handler/ApplicationReadyEventListener.java @@ -0,0 +1,77 @@ +/** + * Copyright (c) 2018 人人开源 All rights reserved. + *

+ * https://www.renren.io + *

+ * 版权所有,侵权必究! + */ + +package com.tduck.cloud.api.handler; + +import com.alibaba.fastjson.JSON; +import com.github.jaemon.dinger.DingerSender; +import com.github.jaemon.dinger.core.entity.DingerRequest; +import com.github.jaemon.dinger.core.entity.DingerResponse; +import com.github.jaemon.dinger.core.entity.enums.MessageSubType; +import com.tduck.cloud.common.util.EnvEnum; +import com.tduck.cloud.common.util.SpringContextUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.context.event.ApplicationReadyEvent; +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 ApplicationReadyEventListener implements ApplicationListener { + private static Logger logger = LogManager.getLogger(ApplicationReadyEventListener.class); + @Value("${spring.application.name}") + private String appName; +// @Value("${server.version}") +// private String version; + @Autowired + private DingerSender dingerSender; + + @Override + public void onApplicationEvent(ApplicationReadyEvent applicationReadyEvent) { + EnvEnum currentEnv = EnvEnum.getCurrentEnv(); + logger.info(currentEnv); + if (!EnvEnum.DEV.getCode().equals(currentEnv.getCode())) { + sendDingMarkDownMsg(); + } + } + + private String getServerIp() { + InetUtils inetUtils = SpringContextUtils.getBean(InetUtils.class); + if (inetUtils == null){ + return null; + } + return inetUtils.findFirstNonLoopbackHostInfo().getIpAddress(); + } + + private void sendDingMarkDownMsg() { + String msg = "部署成功通知 \n" + + "> 服务:" + appName + "\n\n" + + //"> 版本:" + version + "\n\n" + + "> 环境:" + EnvEnum.getCurrentEnv().getName() + "\n\n" + + "> IP: " + getServerIp() + "\n\n"; + try { + + DingerResponse send = dingerSender.send(MessageSubType.MARKDOWN, DingerRequest.request(msg, "部署成功通知")); + logger.info("=====通知结果===>" + JSON.toJSONString(send)); + } catch (Exception e) { + logger.error("sendDingMarkDownMsg exception", e); + } + } + + +}