"+ I18nUtil.getString("jobinfo_field_jobgroup") +" | \n" + - ""+ I18nUtil.getString("jobinfo_field_id") +" | \n" + - ""+ I18nUtil.getString("jobinfo_field_jobdesc") +" | \n" + - ""+ I18nUtil.getString("jobconf_monitor_alarm_title") +" | \n" + - ""+ I18nUtil.getString("jobconf_monitor_alarm_content") +" | \n" + + "" + I18nUtil.getString("jobinfo_field_jobgroup") + " | \n" + + "" + I18nUtil.getString("jobinfo_field_id") + " | \n" + + "" + I18nUtil.getString("jobinfo_field_jobdesc") + " | \n" + + "" + I18nUtil.getString("jobconf_monitor_alarm_title") + " | \n" + + "" + I18nUtil.getString("jobconf_monitor_alarm_content") + " | \n" + "{0} | \n" + "{1} | \n" + "{2} | \n" + - ""+ I18nUtil.getString("jobconf_monitor_alarm_type") +" | \n" + + "" + getAlarmType(triggerCode) + " | \n" + "{3} | \n" + " \n" + " \n" + diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/alarm/impl/WechatJobAlarm.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/alarm/impl/WechatJobAlarm.java new file mode 100644 index 00000000..b736cd9a --- /dev/null +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/alarm/impl/WechatJobAlarm.java @@ -0,0 +1,74 @@ +package com.xxl.job.admin.core.alarm.impl; + +import com.xxl.job.admin.core.alarm.AbstractJobAlarm; +import com.xxl.job.admin.core.alarm.JobAlarm; +import com.xxl.job.admin.core.conf.XxlJobAdminConfig; +import com.xxl.job.admin.core.model.XxlJobGroup; +import com.xxl.job.admin.core.model.XxlJobInfo; +import com.xxl.job.admin.core.model.XxlJobLog; +import com.xxl.job.core.biz.model.ReturnT; +import com.xxl.job.core.util.XxlJobRemotingUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; + +import java.text.MessageFormat; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Collectors; + +@Order(1) +@Component +public class WechatJobAlarm extends AbstractJobAlarm implements JobAlarm { + + private static Logger logger = LoggerFactory.getLogger(WechatJobAlarm.class); + + @Override + public boolean doAlarm(XxlJobInfo info, XxlJobLog jobLog) { + boolean alarmResult = true; + + // send monitor email + if (info != null && XxlJobAdminConfig.getAdminConfig().isEnableWeChatAlarm() && StringUtils.hasText(XxlJobAdminConfig.getAdminConfig().getWechatHook())) { + + // alarmContent + String alarmContent = "Alarm Job LogId=" + jobLog.getId(); + if (jobLog.getTriggerCode() != ReturnT.SUCCESS_CODE) { + alarmContent += "\nTriggerMsg=" + jobLog.getTriggerMsg(); + } + if (jobLog.getHandleCode() > 0 && jobLog.getHandleCode() != ReturnT.SUCCESS_CODE) { + alarmContent += "\nHandleCode=" + jobLog.getHandleMsg(); + } + + // email info + XxlJobGroup group = XxlJobAdminConfig.getAdminConfig().getXxlJobGroupDao().load(info.getJobGroup()); + String s = alarmContent.replaceAll("