Browse Source

任务失败告警邮件发送逻辑优化

xuxueli 6 years ago
parent
commit
2016fa7cea

+ 2 - 1
doc/XXL-JOB官方文档.md View File

1428
 - 14、新增Class的加载缓存,解决频繁加载Class会使jvm的方法区空间不足导致OOM的问题;
1428
 - 14、新增Class的加载缓存,解决频繁加载Class会使jvm的方法区空间不足导致OOM的问题;
1429
 - 15、调整首页报表默认区间为本周,避免日志量太大查询缓慢;
1429
 - 15、调整首页报表默认区间为本周,避免日志量太大查询缓慢;
1430
 - 16、LRU路由更新不及时问题修复;
1430
 - 16、LRU路由更新不及时问题修复;
1431
-- 17、[迭代中]任务线程隔离:
1431
+- 17、任务失败告警邮件发送逻辑优化;
1432
+- 18、[迭代中]任务线程隔离:
1432
     - 执行器测异步响应,不存在阻塞不需要隔离;
1433
     - 执行器测异步响应,不存在阻塞不需要隔离;
1433
     - 调度中心共用单一调度线程池,可能导致调度阻塞需要线程隔离;调度线程池拆分为Fast/Slow两个,针对调度较慢的执行器地址请求,降级使用Slow线程池;考虑是否可以任务级隔离线程池;
1434
     - 调度中心共用单一调度线程池,可能导致调度阻塞需要线程隔离;调度线程池拆分为Fast/Slow两个,针对调度较慢的执行器地址请求,降级使用Slow线程池;考虑是否可以任务级隔离线程池;
1434
 
1435
 

+ 11 - 10
xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobFailMonitorHelper.java View File

150
 		// send monitor email
150
 		// send monitor email
151
 		if (info!=null && info.getAlarmEmail()!=null && info.getAlarmEmail().trim().length()>0) {
151
 		if (info!=null && info.getAlarmEmail()!=null && info.getAlarmEmail().trim().length()>0) {
152
 
152
 
153
+			// alarmContent
153
 			String alarmContent = "Alarm Job LogId=" + jobLog.getId();
154
 			String alarmContent = "Alarm Job LogId=" + jobLog.getId();
154
 			if (jobLog.getTriggerCode() != ReturnT.SUCCESS_CODE) {
155
 			if (jobLog.getTriggerCode() != ReturnT.SUCCESS_CODE) {
155
 				alarmContent += "<br>TriggerMsg=<br>" + jobLog.getTriggerMsg();
156
 				alarmContent += "<br>TriggerMsg=<br>" + jobLog.getTriggerMsg();
158
 				alarmContent += "<br>HandleCode=" + jobLog.getHandleMsg();
159
 				alarmContent += "<br>HandleCode=" + jobLog.getHandleMsg();
159
 			}
160
 			}
160
 
161
 
162
+			// email info
163
+			XxlJobGroup group = XxlJobAdminConfig.getAdminConfig().getXxlJobGroupDao().load(Integer.valueOf(info.getJobGroup()));
164
+			String personal = I18nUtil.getString("admin_name_full");
165
+			String title = I18nUtil.getString("jobconf_monitor");
166
+			String content = MessageFormat.format(mailBodyTemplate,
167
+					group!=null?group.getTitle():"null",
168
+					info.getId(),
169
+					info.getJobDesc(),
170
+					alarmContent);
171
+
161
 			Set<String> emailSet = new HashSet<String>(Arrays.asList(info.getAlarmEmail().split(",")));
172
 			Set<String> emailSet = new HashSet<String>(Arrays.asList(info.getAlarmEmail().split(",")));
162
 			for (String email: emailSet) {
173
 			for (String email: emailSet) {
163
-				XxlJobGroup group = XxlJobAdminConfig.getAdminConfig().getXxlJobGroupDao().load(Integer.valueOf(info.getJobGroup()));
164
-
165
-				String personal = I18nUtil.getString("admin_name_full");
166
-				String title = I18nUtil.getString("jobconf_monitor");
167
-				String content = MessageFormat.format(mailBodyTemplate,
168
-						group!=null?group.getTitle():"null",
169
-						info.getId(),
170
-						info.getJobDesc(),
171
-						alarmContent);
172
-
173
 
174
 
174
 				// make mail
175
 				// make mail
175
 				try {
176
 				try {

+ 1 - 1
xxl-job-core/src/main/java/com/xxl/job/core/thread/ExecutorRegistryThread.java View File

13
 /**
13
 /**
14
  * Created by xuxueli on 17/3/2.
14
  * Created by xuxueli on 17/3/2.
15
  */
15
  */
16
-public class ExecutorRegistryThread extends Thread {
16
+public class ExecutorRegistryThread {
17
     private static Logger logger = LoggerFactory.getLogger(ExecutorRegistryThread.class);
17
     private static Logger logger = LoggerFactory.getLogger(ExecutorRegistryThread.class);
18
 
18
 
19
     private static ExecutorRegistryThread instance = new ExecutorRegistryThread();
19
     private static ExecutorRegistryThread instance = new ExecutorRegistryThread();

+ 1 - 1
xxl-job-core/src/main/java/com/xxl/job/core/thread/JobLogFileCleanThread.java View File

17
  *
17
  *
18
  * @author xuxueli 2017-12-29 16:23:43
18
  * @author xuxueli 2017-12-29 16:23:43
19
  */
19
  */
20
-public class JobLogFileCleanThread extends Thread {
20
+public class JobLogFileCleanThread {
21
     private static Logger logger = LoggerFactory.getLogger(JobLogFileCleanThread.class);
21
     private static Logger logger = LoggerFactory.getLogger(JobLogFileCleanThread.class);
22
 
22
 
23
     private static JobLogFileCleanThread instance = new JobLogFileCleanThread();
23
     private static JobLogFileCleanThread instance = new JobLogFileCleanThread();