浏览代码

1、任务日志表"调度状态"和"执行状态"统一为int值,修改对应表结构;

xueli.xue 8 年前
父节点
当前提交
725d1f4fe5

+ 6 - 6
xxl-job-admin/src/main/java/com/xxl/job/admin/core/biz/AdminBizImpl.java 查看文件

@@ -2,7 +2,7 @@ package com.xxl.job.admin.core.biz;
2 2
 
3 3
 import com.xxl.job.admin.core.model.XxlJobInfo;
4 4
 import com.xxl.job.admin.core.model.XxlJobLog;
5
-import com.xxl.job.admin.core.schedule.DynamicSchedulerUtil;
5
+import com.xxl.job.admin.core.schedule.XxlJobDynamicScheduler;
6 6
 import com.xxl.job.core.biz.AdminBiz;
7 7
 import com.xxl.job.core.biz.model.HandleCallbackParam;
8 8
 import com.xxl.job.core.biz.model.ReturnT;
@@ -24,7 +24,7 @@ public class AdminBizImpl implements AdminBiz {
24 24
     public ReturnT<String> callback(HandleCallbackParam handleCallbackParam) {
25 25
 
26 26
         // valid log item
27
-        XxlJobLog log = DynamicSchedulerUtil.xxlJobLogDao.load(handleCallbackParam.getLogId());
27
+        XxlJobLog log = XxlJobDynamicScheduler.xxlJobLogDao.load(handleCallbackParam.getLogId());
28 28
         if (log == null) {
29 29
             return new ReturnT(ReturnT.FAIL_CODE, "log item not found.");
30 30
         }
@@ -32,17 +32,17 @@ public class AdminBizImpl implements AdminBiz {
32 32
         // trigger success, to trigger child job, and avoid repeat trigger child job
33 33
         String childTriggerMsg = null;
34 34
         if (ReturnT.SUCCESS_CODE==handleCallbackParam.getCode() && ReturnT.SUCCESS_CODE!=log.getHandleCode()) {
35
-            XxlJobInfo xxlJobInfo = DynamicSchedulerUtil.xxlJobInfoDao.load(log.getJobGroup(), log.getJobName());
35
+            XxlJobInfo xxlJobInfo = XxlJobDynamicScheduler.xxlJobInfoDao.load(log.getJobGroup(), log.getJobName());
36 36
             if (xxlJobInfo!=null && StringUtils.isNotBlank(xxlJobInfo.getChildJobKey())) {
37 37
                 childTriggerMsg = "<hr>";
38 38
                 String[] childJobKeys = xxlJobInfo.getChildJobKey().split(",");
39 39
                 for (int i = 0; i < childJobKeys.length; i++) {
40 40
                     String[] jobKeyArr = childJobKeys[i].split("_");
41 41
                     if (jobKeyArr!=null && jobKeyArr.length==2) {
42
-                        XxlJobInfo childJobInfo = DynamicSchedulerUtil.xxlJobInfoDao.load(Integer.valueOf(jobKeyArr[0]), jobKeyArr[1]);
42
+                        XxlJobInfo childJobInfo = XxlJobDynamicScheduler.xxlJobInfoDao.load(Integer.valueOf(jobKeyArr[0]), jobKeyArr[1]);
43 43
                         if (childJobInfo!=null) {
44 44
                             try {
45
-                                boolean ret = DynamicSchedulerUtil.triggerJob(childJobInfo.getJobName(), String.valueOf(childJobInfo.getJobGroup()));
45
+                                boolean ret = XxlJobDynamicScheduler.triggerJob(childJobInfo.getJobName(), String.valueOf(childJobInfo.getJobGroup()));
46 46
 
47 47
                                 // add msg
48 48
                                 childTriggerMsg += MessageFormat.format("<br> {0}/{1} 触发子任务成功, 子任务Key: {2}, status: {3}, 子任务描述: {4}",
@@ -79,7 +79,7 @@ public class AdminBizImpl implements AdminBiz {
79 79
         log.setHandleTime(new Date());
80 80
         log.setHandleCode(handleCallbackParam.getCode());
81 81
         log.setHandleMsg(handleMsg.toString());
82
-        DynamicSchedulerUtil.xxlJobLogDao.updateHandleInfo(log);
82
+        XxlJobDynamicScheduler.xxlJobLogDao.updateHandleInfo(log);
83 83
 
84 84
         return new ReturnT(ReturnT.SUCCESS_CODE, null);
85 85
     }

+ 6 - 6
xxl-job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java 查看文件

@@ -3,9 +3,9 @@ package com.xxl.job.admin.core.jobbean;
3 3
 import com.xxl.job.admin.core.model.XxlJobGroup;
4 4
 import com.xxl.job.admin.core.model.XxlJobInfo;
5 5
 import com.xxl.job.admin.core.model.XxlJobLog;
6
+import com.xxl.job.admin.core.schedule.XxlJobDynamicScheduler;
6 7
 import com.xxl.job.admin.core.thread.JobMonitorHelper;
7 8
 import com.xxl.job.admin.core.thread.JobRegistryHelper;
8
-import com.xxl.job.admin.core.schedule.DynamicSchedulerUtil;
9 9
 import com.xxl.job.core.biz.ExecutorBiz;
10 10
 import com.xxl.job.core.biz.model.ReturnT;
11 11
 import com.xxl.job.core.biz.model.TriggerParam;
@@ -36,12 +36,12 @@ public class RemoteHttpJobBean extends QuartzJobBean {
36 36
 			throws JobExecutionException {
37 37
 		JobKey jobKey = context.getTrigger().getJobKey();
38 38
 		
39
-		XxlJobInfo jobInfo = DynamicSchedulerUtil.xxlJobInfoDao.load(Integer.valueOf(jobKey.getGroup()), jobKey.getName());
39
+		XxlJobInfo jobInfo = XxlJobDynamicScheduler.xxlJobInfoDao.load(Integer.valueOf(jobKey.getGroup()), jobKey.getName());
40 40
 		// save log
41 41
 		XxlJobLog jobLog = new XxlJobLog();
42 42
 		jobLog.setJobGroup(jobInfo.getJobGroup());
43 43
 		jobLog.setJobName(jobInfo.getJobName());
44
-		DynamicSchedulerUtil.xxlJobLogDao.save(jobLog);
44
+		XxlJobDynamicScheduler.xxlJobLogDao.save(jobLog);
45 45
 		logger.debug(">>>>>>>>>>> xxl-job trigger start, jobId:{}", jobLog.getId());
46 46
 
47 47
         // admin address
@@ -50,7 +50,7 @@ public class RemoteHttpJobBean extends QuartzJobBean {
50 50
         if (adminAddressList!=null) {
51 51
             adminAddressSet.addAll(adminAddressList);
52 52
         }
53
-        adminAddressSet.add(DynamicSchedulerUtil.getCallbackAddress());
53
+        adminAddressSet.add(XxlJobDynamicScheduler.getCallbackAddress());
54 54
 
55 55
 		// update trigger info 1/2
56 56
 		jobLog.setTriggerTime(new Date());
@@ -68,7 +68,7 @@ public class RemoteHttpJobBean extends QuartzJobBean {
68 68
 
69 69
 		// parse address
70 70
 		List<String> addressList = new ArrayList<String>();
71
-		XxlJobGroup group = DynamicSchedulerUtil.xxlJobGroupDao.load(Integer.valueOf(jobInfo.getJobGroup()));
71
+		XxlJobGroup group = XxlJobDynamicScheduler.xxlJobGroupDao.load(Integer.valueOf(jobInfo.getJobGroup()));
72 72
 		if (group!=null) {
73 73
 			addressList = JobRegistryHelper.discover(RegistHelper.RegistType.EXECUTOR.name(), group.getAppName());
74 74
 		}
@@ -82,7 +82,7 @@ public class RemoteHttpJobBean extends QuartzJobBean {
82 82
 		// update trigger info 2/2
83 83
 		jobLog.setTriggerCode(responseModel.getCode());
84 84
 		jobLog.setTriggerMsg(responseModel.getMsg());
85
-		DynamicSchedulerUtil.xxlJobLogDao.updateTriggerInfo(jobLog);
85
+		XxlJobDynamicScheduler.xxlJobLogDao.updateTriggerInfo(jobLog);
86 86
 
87 87
 		// monitor triger
88 88
 		JobMonitorHelper.monitor(jobLog.getId());

xxl-job-admin/src/main/java/com/xxl/job/admin/core/schedule/DynamicSchedulerUtil.java → xxl-job-admin/src/main/java/com/xxl/job/admin/core/schedule/XxlJobDynamicScheduler.java 查看文件

@@ -29,13 +29,13 @@ import java.util.*;
29 29
  * base quartz scheduler util
30 30
  * @author xuxueli 2015-12-19 16:13:53
31 31
  */
32
-public final class DynamicSchedulerUtil implements ApplicationContextAware, InitializingBean {
33
-    private static final Logger logger = LoggerFactory.getLogger(DynamicSchedulerUtil.class);
32
+public final class XxlJobDynamicScheduler implements ApplicationContextAware, InitializingBean {
33
+    private static final Logger logger = LoggerFactory.getLogger(XxlJobDynamicScheduler.class);
34 34
     
35 35
     // Scheduler
36 36
     private static Scheduler scheduler;
37 37
     public static void setScheduler(Scheduler scheduler) {
38
-		DynamicSchedulerUtil.scheduler = scheduler;
38
+		XxlJobDynamicScheduler.scheduler = scheduler;
39 39
 	}
40 40
     
41 41
     // trigger callback address
@@ -84,10 +84,10 @@ public final class DynamicSchedulerUtil implements ApplicationContextAware, Init
84 84
 
85 85
     @Override
86 86
 	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
87
-		DynamicSchedulerUtil.xxlJobLogDao = applicationContext.getBean(IXxlJobLogDao.class);
88
-		DynamicSchedulerUtil.xxlJobInfoDao = applicationContext.getBean(IXxlJobInfoDao.class);
89
-        DynamicSchedulerUtil.xxlJobRegistryDao = applicationContext.getBean(IXxlJobRegistryDao.class);
90
-        DynamicSchedulerUtil.xxlJobGroupDao = applicationContext.getBean(IXxlJobGroupDao.class);
87
+		XxlJobDynamicScheduler.xxlJobLogDao = applicationContext.getBean(IXxlJobLogDao.class);
88
+		XxlJobDynamicScheduler.xxlJobInfoDao = applicationContext.getBean(IXxlJobInfoDao.class);
89
+        XxlJobDynamicScheduler.xxlJobRegistryDao = applicationContext.getBean(IXxlJobRegistryDao.class);
90
+        XxlJobDynamicScheduler.xxlJobGroupDao = applicationContext.getBean(IXxlJobGroupDao.class);
91 91
 	}
92 92
     
93 93
 	@Override

+ 4 - 4
xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobMonitorHelper.java 查看文件

@@ -3,7 +3,7 @@ package com.xxl.job.admin.core.thread;
3 3
 import com.xxl.job.admin.core.model.XxlJobGroup;
4 4
 import com.xxl.job.admin.core.model.XxlJobInfo;
5 5
 import com.xxl.job.admin.core.model.XxlJobLog;
6
-import com.xxl.job.admin.core.schedule.DynamicSchedulerUtil;
6
+import com.xxl.job.admin.core.schedule.XxlJobDynamicScheduler;
7 7
 import com.xxl.job.admin.core.util.MailUtil;
8 8
 import com.xxl.job.core.biz.model.ReturnT;
9 9
 import org.slf4j.Logger;
@@ -38,7 +38,7 @@ public class JobMonitorHelper {
38 38
 						Integer jobLogId = JobMonitorHelper.helper.queue.take();
39 39
 						if (jobLogId != null && jobLogId > 0) {
40 40
 							logger.info(">>>>>>>>>>> job monitor heat success, JobLogId:{}", jobLogId);
41
-							XxlJobLog log = DynamicSchedulerUtil.xxlJobLogDao.load(jobLogId);
41
+							XxlJobLog log = XxlJobDynamicScheduler.xxlJobLogDao.load(jobLogId);
42 42
 							if (log!=null) {
43 43
 								if (ReturnT.SUCCESS_CODE==log.getTriggerCode() && log.getHandleCode()==0) {
44 44
 									// running
@@ -53,13 +53,13 @@ public class JobMonitorHelper {
53 53
 									// pass
54 54
 								}
55 55
 								if (ReturnT.FAIL_CODE == log.getTriggerCode()|| ReturnT.FAIL_CODE==log.getHandleCode()) {
56
-									XxlJobInfo info = DynamicSchedulerUtil.xxlJobInfoDao.load(log.getJobGroup(), log.getJobName());
56
+									XxlJobInfo info = XxlJobDynamicScheduler.xxlJobInfoDao.load(log.getJobGroup(), log.getJobName());
57 57
 									if (info!=null && info.getAlarmEmail()!=null && info.getAlarmEmail().trim().length()>0) {
58 58
 
59 59
 										Set<String> emailSet = new HashSet<String>(Arrays.asList(info.getAlarmEmail().split(",")));
60 60
 										for (String email: emailSet) {
61 61
 											String title = "《调度监控报警》(任务调度中心XXL-JOB)";
62
-											XxlJobGroup group = DynamicSchedulerUtil.xxlJobGroupDao.load(Integer.valueOf(info.getJobGroup()));
62
+											XxlJobGroup group = XxlJobDynamicScheduler.xxlJobGroupDao.load(Integer.valueOf(info.getJobGroup()));
63 63
 											String content = MessageFormat.format("任务调度失败, 执行器名称:{0}, 任务描述:{1}.", group!=null?group.getTitle():"null", info.getJobDesc());
64 64
 											MailUtil.sendMail(email, title, content, false, null);
65 65
 										}

+ 5 - 5
xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobRegistryHelper.java 查看文件

@@ -1,7 +1,7 @@
1 1
 package com.xxl.job.admin.core.thread;
2 2
 
3 3
 import com.xxl.job.admin.core.model.XxlJobRegistry;
4
-import com.xxl.job.admin.core.schedule.DynamicSchedulerUtil;
4
+import com.xxl.job.admin.core.schedule.XxlJobDynamicScheduler;
5 5
 import com.xxl.job.core.registry.RegistHelper;
6 6
 import org.slf4j.Logger;
7 7
 import org.slf4j.LoggerFactory;
@@ -28,15 +28,15 @@ public class JobRegistryHelper {
28 28
 				while (true) {
29 29
 					try {
30 30
                         // registry admin
31
-                        int ret = DynamicSchedulerUtil.xxlJobRegistryDao.registryUpdate(RegistHelper.RegistType.ADMIN.name(), RegistHelper.RegistType.ADMIN.name(), DynamicSchedulerUtil.getCallbackAddress());
31
+                        int ret = XxlJobDynamicScheduler.xxlJobRegistryDao.registryUpdate(RegistHelper.RegistType.ADMIN.name(), RegistHelper.RegistType.ADMIN.name(), XxlJobDynamicScheduler.getCallbackAddress());
32 32
                         if (ret < 1) {
33
-                            DynamicSchedulerUtil.xxlJobRegistryDao.registrySave(RegistHelper.RegistType.ADMIN.name(), RegistHelper.RegistType.ADMIN.name(), DynamicSchedulerUtil.getCallbackAddress());
33
+                            XxlJobDynamicScheduler.xxlJobRegistryDao.registrySave(RegistHelper.RegistType.ADMIN.name(), RegistHelper.RegistType.ADMIN.name(), XxlJobDynamicScheduler.getCallbackAddress());
34 34
                         }
35 35
 
36 36
                         // fresh registry map
37 37
 						ConcurrentHashMap<String, List<String>> temp = new ConcurrentHashMap<String, List<String>>();
38
-						DynamicSchedulerUtil.xxlJobRegistryDao.removeDead(RegistHelper.TIMEOUT*2);
39
-						List<XxlJobRegistry> list = DynamicSchedulerUtil.xxlJobRegistryDao.findAll(RegistHelper.TIMEOUT*2);
38
+						XxlJobDynamicScheduler.xxlJobRegistryDao.removeDead(RegistHelper.TIMEOUT*2);
39
+						List<XxlJobRegistry> list = XxlJobDynamicScheduler.xxlJobRegistryDao.findAll(RegistHelper.TIMEOUT*2);
40 40
 						if (list != null) {
41 41
 							for (XxlJobRegistry item: list) {
42 42
 								String groupKey = makeGroupKey(item.getRegistryGroup(), item.getRegistryKey());

+ 9 - 9
xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java 查看文件

@@ -2,7 +2,7 @@ package com.xxl.job.admin.service.impl;
2 2
 
3 3
 import com.xxl.job.admin.core.model.XxlJobGroup;
4 4
 import com.xxl.job.admin.core.model.XxlJobInfo;
5
-import com.xxl.job.admin.core.schedule.DynamicSchedulerUtil;
5
+import com.xxl.job.admin.core.schedule.XxlJobDynamicScheduler;
6 6
 import com.xxl.job.admin.dao.IXxlJobGroupDao;
7 7
 import com.xxl.job.admin.dao.IXxlJobInfoDao;
8 8
 import com.xxl.job.admin.dao.IXxlJobLogDao;
@@ -51,7 +51,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
51 51
 		// fill job info
52 52
 		if (list!=null && list.size()>0) {
53 53
 			for (XxlJobInfo jobInfo : list) {
54
-				DynamicSchedulerUtil.fillJobInfo(jobInfo);
54
+				XxlJobDynamicScheduler.fillJobInfo(jobInfo);
55 55
 			}
56 56
 		}
57 57
 		
@@ -106,7 +106,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
106 106
 		// generate jobName
107 107
 		String jobName = FastDateFormat.getInstance("yyyyMMddHHmmssSSSS").format(new Date());
108 108
 		try {
109
-			if (DynamicSchedulerUtil.checkExists(jobName, String.valueOf(jobGroup))) {
109
+			if (XxlJobDynamicScheduler.checkExists(jobName, String.valueOf(jobGroup))) {
110 110
 				return new ReturnT<String>(500, "系统繁忙,请稍后重试");
111 111
 			}
112 112
 		} catch (SchedulerException e1) {
@@ -131,7 +131,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
131 131
 
132 132
 		try {
133 133
 			// add job 2 quartz
134
-			boolean result = DynamicSchedulerUtil.addJob(String.valueOf(jobGroup), jobName, jobCron);
134
+			boolean result = XxlJobDynamicScheduler.addJob(String.valueOf(jobGroup), jobName, jobCron);
135 135
 			if (result) {
136 136
 				xxlJobInfoDao.save(jobInfo);
137 137
 				return ReturnT.SUCCESS;
@@ -200,7 +200,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
200 200
 		
201 201
 		try {
202 202
 			// fresh quartz
203
-			boolean ret = DynamicSchedulerUtil.rescheduleJob(String.valueOf(jobGroup), jobName, jobCron);
203
+			boolean ret = XxlJobDynamicScheduler.rescheduleJob(String.valueOf(jobGroup), jobName, jobCron);
204 204
 			if (ret) {
205 205
 				xxlJobInfoDao.update(jobInfo);
206 206
 				return ReturnT.SUCCESS;
@@ -216,7 +216,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
216 216
 	@Override
217 217
 	public ReturnT<String> remove(int jobGroup, String jobName) {
218 218
 		try {
219
-			DynamicSchedulerUtil.removeJob(jobName, String.valueOf(jobGroup));
219
+			XxlJobDynamicScheduler.removeJob(jobName, String.valueOf(jobGroup));
220 220
 			xxlJobInfoDao.delete(jobGroup, jobName);
221 221
 			xxlJobLogDao.delete(jobGroup, jobName);
222 222
 			xxlJobLogGlueDao.delete(jobGroup, jobName);
@@ -230,7 +230,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
230 230
 	@Override
231 231
 	public ReturnT<String> pause(int jobGroup, String jobName) {
232 232
 		try {
233
-			DynamicSchedulerUtil.pauseJob(jobName, String.valueOf(jobGroup));	// jobStatus do not store
233
+			XxlJobDynamicScheduler.pauseJob(jobName, String.valueOf(jobGroup));	// jobStatus do not store
234 234
 			return ReturnT.SUCCESS;
235 235
 		} catch (SchedulerException e) {
236 236
 			e.printStackTrace();
@@ -241,7 +241,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
241 241
 	@Override
242 242
 	public ReturnT<String> resume(int jobGroup, String jobName) {
243 243
 		try {
244
-			DynamicSchedulerUtil.resumeJob(jobName, String.valueOf(jobGroup));
244
+			XxlJobDynamicScheduler.resumeJob(jobName, String.valueOf(jobGroup));
245 245
 			return ReturnT.SUCCESS;
246 246
 		} catch (SchedulerException e) {
247 247
 			e.printStackTrace();
@@ -252,7 +252,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
252 252
 	@Override
253 253
 	public ReturnT<String> triggerJob(int jobGroup, String jobName) {
254 254
 		try {
255
-			DynamicSchedulerUtil.triggerJob(jobName, String.valueOf(jobGroup));
255
+			XxlJobDynamicScheduler.triggerJob(jobName, String.valueOf(jobGroup));
256 256
 			return ReturnT.SUCCESS;
257 257
 		} catch (SchedulerException e) {
258 258
 			e.printStackTrace();

+ 1 - 1
xxl-job-admin/src/main/resources/applicationcontext-xxl-job.xml 查看文件

@@ -14,7 +14,7 @@
14 14
 	</bean>
15 15
 	
16 16
 	<!-- 协同-调度器 -->
17
-	<bean id="dynamicSchedulerUtil" class="com.xxl.job.admin.core.schedule.DynamicSchedulerUtil" init-method="init" destroy-method="destroy" >
17
+	<bean id="dynamicSchedulerUtil" class="com.xxl.job.admin.core.schedule.XxlJobDynamicScheduler" init-method="init" destroy-method="destroy" >
18 18
 		<!-- (轻易不要变更“调度器名称”, 任务创建时会绑定该“调度器名称”) -->
19 19
         <property name="scheduler" ref="quartzScheduler"/>
20 20
 		<!-- 调度中心回调IP[选填],为空则自动获取 -->