diff --git a/efak-api/src/main/java/org/smartloli/kafka/eagle/api/im/queue/AbstractJob.java b/efak-api/src/main/java/org/smartloli/kafka/eagle/api/im/queue/AbstractJob.java
new file mode 100644
index 000000000..d18cdde08
--- /dev/null
+++ b/efak-api/src/main/java/org/smartloli/kafka/eagle/api/im/queue/AbstractJob.java
@@ -0,0 +1,84 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.smartloli.kafka.eagle.api.im.queue;
+
+import com.alibaba.fastjson.JSONObject;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.smartloli.kafka.eagle.common.protocol.alarm.queue.BaseJobContext;
+import org.smartloli.kafka.eagle.common.util.HttpClientUtils;
+import org.smartloli.kafka.eagle.common.util.KConstants.AlarmQueue;
+import org.smartloli.kafka.eagle.common.util.LoggerUtils;
+
+import java.text.MessageFormat;
+import java.util.Map;
+
+/**
+ * alarm AbstractJob
+ *
+ * AbstractJob
+ * author:yinzhidong
+ * email:yinzhidong@shizhuang-inc.com
+ * time:2022/6/30 5:51 下午
+ */
+public abstract class AbstractJob implements Job {
+
+ public final static String SEND_MSG = "{0} SendMsg Result: {1}";
+
+ public final static String SEND_ERROR_MSG = "Send alarm message has error by {0}, msg is ";
+
+ /**
+ * Send alarm information
+ */
+ public void execute(JobExecutionContext jobContext) throws JobExecutionException {
+ BaseJobContext bjc = (BaseJobContext) jobContext.getJobDetail().getJobDataMap().get(AlarmQueue.JOB_PARAMS);
+ sendMsg(bjc.getData(), bjc.getUrl());
+ }
+
+
+ private int sendMsg(String data, String url) {
+ Class extends AbstractJob> jobClass = this.getClass();
+ String simpleClassName = jobClass.getSimpleName();
+
+ try {
+ // abstrct method parseSendMessage, that different alarm platforms, different implementations
+ Map parseSendMessage = this.parseSendMessage(data, url);
+ String result = HttpClientUtils.doPostJson(url, JSONObject.toJSONString(parseSendMessage));
+
+ String info = MessageFormat.format(SEND_MSG, simpleClassName, result);
+ LoggerUtils.print(jobClass).info(info);
+ } catch (Exception e) {
+ String errorInfo = MessageFormat.format(SEND_ERROR_MSG, simpleClassName);
+ LoggerUtils.print(jobClass).error(errorInfo, e);
+ return 0;
+ }
+ return 1;
+ }
+
+
+ /**
+ * parse alarm information of Map
+ *
+ * @param data
+ * @param url
+ * @return
+ */
+ protected abstract Map parseSendMessage(String data, String url);
+
+}
diff --git a/efak-api/src/main/java/org/smartloli/kafka/eagle/api/im/queue/DingDingJob.java b/efak-api/src/main/java/org/smartloli/kafka/eagle/api/im/queue/DingDingJob.java
index 1d2de9365..a223746cc 100644
--- a/efak-api/src/main/java/org/smartloli/kafka/eagle/api/im/queue/DingDingJob.java
+++ b/efak-api/src/main/java/org/smartloli/kafka/eagle/api/im/queue/DingDingJob.java
@@ -17,15 +17,7 @@
*/
package org.smartloli.kafka.eagle.api.im.queue;
-import com.alibaba.fastjson.JSONObject;
-import org.quartz.Job;
-import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
-import org.smartloli.kafka.eagle.common.protocol.alarm.queue.BaseJobContext;
-import org.smartloli.kafka.eagle.common.util.HttpClientUtils;
-import org.smartloli.kafka.eagle.common.util.KConstants.AlarmQueue;
import org.smartloli.kafka.eagle.common.util.KConstants.IM;
-import org.smartloli.kafka.eagle.common.util.LoggerUtils;
import java.util.HashMap;
import java.util.Map;
@@ -37,27 +29,8 @@
*
* Created by Oct 27, 2019
*/
-public class DingDingJob implements Job {
+public class DingDingJob extends AbstractJob {
- /**
- * Send alarm information by dingding.
- */
- public void execute(JobExecutionContext jobContext) throws JobExecutionException {
- BaseJobContext bjc = (BaseJobContext) jobContext.getJobDetail().getJobDataMap().get(AlarmQueue.JOB_PARAMS);
- sendMsg(bjc.getData(), bjc.getUrl());
- }
-
- private int sendMsg(String data, String url) {
- try {
- Map dingDingMarkdownMessage = getDingDingMarkdownMessage(IM.TITLE, data, true);
- String result = HttpClientUtils.doPostJson(url, JSONObject.toJSONString(dingDingMarkdownMessage));
- LoggerUtils.print(this.getClass()).info("DingDing SendMsg Result: " + result);
- } catch (Exception e) {
- LoggerUtils.print(this.getClass()).error("Send alarm message has error by dingding, msg is ", e);
- return 0;
- }
- return 1;
- }
/**
* create markdown format map, do not point @user, option @all.
@@ -82,4 +55,9 @@ private static Map getDingDingMarkdownMessage(String title, Stri
return map;
}
+
+ @Override
+ protected Map parseSendMessage(String data, String url) {
+ return getDingDingMarkdownMessage(IM.TITLE, data, true);
+ }
}
diff --git a/efak-api/src/main/java/org/smartloli/kafka/eagle/api/im/queue/WeChatJob.java b/efak-api/src/main/java/org/smartloli/kafka/eagle/api/im/queue/WeChatJob.java
index 3f19e1710..07ae094dc 100644
--- a/efak-api/src/main/java/org/smartloli/kafka/eagle/api/im/queue/WeChatJob.java
+++ b/efak-api/src/main/java/org/smartloli/kafka/eagle/api/im/queue/WeChatJob.java
@@ -17,15 +17,7 @@
*/
package org.smartloli.kafka.eagle.api.im.queue;
-import com.alibaba.fastjson.JSONObject;
-import org.quartz.Job;
-import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
-import org.smartloli.kafka.eagle.common.protocol.alarm.queue.BaseJobContext;
-import org.smartloli.kafka.eagle.common.util.HttpClientUtils;
-import org.smartloli.kafka.eagle.common.util.KConstants.AlarmQueue;
import org.smartloli.kafka.eagle.common.util.KConstants.WeChat;
-import org.smartloli.kafka.eagle.common.util.LoggerUtils;
import java.util.HashMap;
import java.util.Map;
@@ -37,27 +29,8 @@
*
* Created by Oct 27, 2019
*/
-public class WeChatJob implements Job {
+public class WeChatJob extends AbstractJob {
- /**
- * Send alarm information by wechat.
- */
- public void execute(JobExecutionContext jobContext) throws JobExecutionException {
- BaseJobContext bjc = (BaseJobContext) jobContext.getJobDetail().getJobDataMap().get(AlarmQueue.JOB_PARAMS);
- sendMsg(bjc.getData(), bjc.getUrl());
- }
-
- private int sendMsg(String data, String url) {
- try {
- Map wechatMarkdownMessage = getWeChatMarkdownMessage(data);
- String result = HttpClientUtils.doPostJson(url, JSONObject.toJSONString(wechatMarkdownMessage));
- LoggerUtils.print(this.getClass()).info("DingDing SendMsg Result: " + result);
- } catch (Exception e) {
- LoggerUtils.print(this.getClass()).error("Send alarm message has error by wechat, msg is ", e);
- return 0;
- }
- return 1;
- }
private static Map getWeChatMarkdownMessage(String text) {
Map map = new HashMap<>();
@@ -75,4 +48,8 @@ private static Map getWeChatMarkdownMessage(String text) {
return map;
}
+ @Override
+ protected Map parseSendMessage(String data, String url) {
+ return getWeChatMarkdownMessage(data);
+ }
}
diff --git a/efak-api/src/test/java/org/smartloli/kafka/eagle/api/sms/TestIM.java b/efak-api/src/test/java/org/smartloli/kafka/eagle/api/sms/TestIM.java
index 37a406988..20b54ce2d 100644
--- a/efak-api/src/test/java/org/smartloli/kafka/eagle/api/sms/TestIM.java
+++ b/efak-api/src/test/java/org/smartloli/kafka/eagle/api/sms/TestIM.java
@@ -20,8 +20,11 @@
import org.smartloli.kafka.eagle.api.im.IMFactory;
import org.smartloli.kafka.eagle.api.im.IMService;
import org.smartloli.kafka.eagle.api.im.IMServiceImpl;
+import org.smartloli.kafka.eagle.api.im.queue.AbstractJob;
import org.smartloli.kafka.eagle.common.protocol.alarm.AlarmMessageInfo;
+import java.text.MessageFormat;
+
/**
* TODO
*
@@ -31,10 +34,12 @@
*/
public class TestIM {
public static void main(String[] args) {
- testAlarmClusterByDingDingMarkDownNewStyle();
-// testAlarmClusterByDingDingMarkDown();
-// testAlarmClusterByWeChatMarkDown();
+ // testAlarmClusterByDingDingMarkDownNewStyle();
+ // testAlarmClusterByDingDingMarkDown();
+ testAlarmClusterByWeChatMarkDown();
+
+ testAbstractJobParseMessageFormat();
}
/**
@@ -100,4 +105,16 @@ private static void testAlarmClusterByDingDingMarkDownNewStyle() {
im.sendPostMsgByDingDing(alarmMsg.toDingDingMarkDown(), "https://oapi.dingtalk.com/robot/send?access_token=3b7b59d17db0145549b1f65f62921b44bacd1701e635e797da45318a94339060");
}
+
+ private static void testAbstractJobParseMessageFormat() {
+ String simpleClassName = TestIM.class.getSimpleName();
+ String result = "{\"state\": 1, \"msg\": \"ok\"}";
+
+ String info = MessageFormat.format(AbstractJob.SEND_MSG, simpleClassName, result);
+ System.out.println(info);
+
+
+ info = MessageFormat.format(AbstractJob.SEND_ERROR_MSG, simpleClassName);
+ System.out.println(info);
+ }
}