浏览代码

IJobHandler取消任务返回值,原通过返回值判断执行状态,逻辑改为:默认任务执行成功,仅在捕获异常时认定任务执行失败。

xueli.xue 9 年前
父节点
当前提交
148b7ca5e3

+ 5 - 3
README.md 查看文件

589
 - 1、groupId从com.xxl改为com.xuxueli,为推送maven中央仓库做前期准备;
589
 - 1、groupId从com.xxl改为com.xuxueli,为推送maven中央仓库做前期准备;
590
 - 2、系统版本不在维护在项目跟pom中,各个子模块单独配置版本配置,解决子模块无法单独编译的问题;
590
 - 2、系统版本不在维护在项目跟pom中,各个子模块单独配置版本配置,解决子模块无法单独编译的问题;
591
 - 3、底层RPC通讯,传输数据的字节长度统计规则优化,可节省50%数据传输量;
591
 - 3、底层RPC通讯,传输数据的字节长度统计规则优化,可节省50%数据传输量;
592
-- 4、系统公共弹框功能,插件化;
593
-- 5、底层表结构,表明统一大写;
594
-- 6、调度中心,异常处理器JSON响应的ContentType修改,修复浏览器不识别的问题;
592
+- 4、IJobHandler取消任务返回值,原通过返回值判断执行状态,逻辑改为:默认任务执行成功,仅在捕获异常时认定任务执行失败。
593
+- 5、系统公共弹框功能,插件化;
594
+- 6、底层表结构,表明统一大写;
595
+- 7、调度中心,异常处理器JSON响应的ContentType修改,修复浏览器不识别的问题;
596
+
595
 
597
 
596
 Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段, 地址见分支 [V1.3](https://github.com/xuxueli/xxl-job/tree/v1.3) 。新特性将会在master分支持续更新。
598
 Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段, 地址见分支 [V1.3](https://github.com/xuxueli/xxl-job/tree/v1.3) 。新特性将会在master分支持续更新。
597
 
599
 

+ 3 - 5
xxl-job-admin/src/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl 查看文件

169
 import org.slf4j.LoggerFactory;
169
 import org.slf4j.LoggerFactory;
170
 
170
 
171
 import com.xxl.job.core.handler.IJobHandler;
171
 import com.xxl.job.core.handler.IJobHandler;
172
-import com.xxl.job.core.handler.IJobHandler.JobHandleStatus;
173
 
172
 
174
-public class DemoJobHandler extends IJobHandler {
175
-	private static transient Logger logger = LoggerFactory.getLogger(DemoJobHandler.class);
173
+public class DemoGlueJobHandler extends IJobHandler {
174
+	private static transient Logger logger = LoggerFactory.getLogger(DemoGlueJobHandler.class);
176
 	
175
 	
177
 	@Override
176
 	@Override
178
-	public JobHandleStatus execute(String... params) throws Exception {
177
+	public void execute(String... params) throws Exception {
179
 		logger.info("XXL-JOB, Hello World.");
178
 		logger.info("XXL-JOB, Hello World.");
180
-		return JobHandleStatus.SUCCESS;
181
 	}
179
 	}
182
 	
180
 	
183
 }
181
 }

+ 1 - 2
xxl-job-admin/src/test/java/com/xxl/job/dao/impl/XxlJobLogTest.java 查看文件

2
 
2
 
3
 import com.xxl.job.admin.core.model.XxlJobLog;
3
 import com.xxl.job.admin.core.model.XxlJobLog;
4
 import com.xxl.job.admin.dao.IXxlJobLogDao;
4
 import com.xxl.job.admin.dao.IXxlJobLogDao;
5
-import com.xxl.job.core.handler.IJobHandler;
6
 import com.xxl.job.core.router.model.ResponseModel;
5
 import com.xxl.job.core.router.model.ResponseModel;
7
 import org.junit.Test;
6
 import org.junit.Test;
8
 import org.junit.runner.RunWith;
7
 import org.junit.runner.RunWith;
45
 	public void updateHandleInfo(){
44
 	public void updateHandleInfo(){
46
 		XxlJobLog xxlJobLog = xxlJobLogDao.load(29);
45
 		XxlJobLog xxlJobLog = xxlJobLogDao.load(29);
47
 		xxlJobLog.setHandleTime(new Date());
46
 		xxlJobLog.setHandleTime(new Date());
48
-		xxlJobLog.setHandleStatus(IJobHandler.JobHandleStatus.SUCCESS.name());
47
+		xxlJobLog.setHandleStatus(ResponseModel.SUCCESS);
49
 		xxlJobLog.setHandleMsg("handle msg");
48
 		xxlJobLog.setHandleMsg("handle msg");
50
 		xxlJobLogDao.updateHandleInfo(xxlJobLog);
49
 		xxlJobLogDao.updateHandleInfo(xxlJobLog);
51
 	}
50
 	}

+ 9 - 13
xxl-job-core/src/main/java/com/xxl/job/core/glue/GlueFactory.java 查看文件

1
 package com.xxl.job.core.glue;
1
 package com.xxl.job.core.glue;
2
 
2
 
3
-import java.lang.reflect.Field;
4
-import java.lang.reflect.Modifier;
5
-
6
-import javax.annotation.Resource;
7
-
3
+import com.xxl.job.core.glue.cache.LocalCache;
4
+import com.xxl.job.core.glue.loader.GlueLoader;
5
+import com.xxl.job.core.handler.IJobHandler;
6
+import groovy.lang.GroovyClassLoader;
8
 import org.slf4j.Logger;
7
 import org.slf4j.Logger;
9
 import org.slf4j.LoggerFactory;
8
 import org.slf4j.LoggerFactory;
10
 import org.springframework.beans.BeansException;
9
 import org.springframework.beans.BeansException;
13
 import org.springframework.context.ApplicationContextAware;
12
 import org.springframework.context.ApplicationContextAware;
14
 import org.springframework.core.annotation.AnnotationUtils;
13
 import org.springframework.core.annotation.AnnotationUtils;
15
 
14
 
16
-import com.xxl.job.core.glue.cache.LocalCache;
17
-import com.xxl.job.core.glue.loader.GlueLoader;
18
-import com.xxl.job.core.handler.IJobHandler;
19
-import com.xxl.job.core.handler.IJobHandler.JobHandleStatus;
20
-
21
-import groovy.lang.GroovyClassLoader;
15
+import javax.annotation.Resource;
16
+import java.lang.reflect.Field;
17
+import java.lang.reflect.Modifier;
22
 
18
 
23
 /**
19
 /**
24
  * glue factory, product class/object by name
20
  * glue factory, product class/object by name
157
 	}
153
 	}
158
 	
154
 	
159
 	// ----------------------------- util -----------------------------
155
 	// ----------------------------- util -----------------------------
160
-	public static JobHandleStatus glue(String job_group, String job_name, String... params) throws Exception{
161
-		return GlueFactory.glueFactory.loadInstance(job_group, job_name).execute(params);
156
+	public static void glue(String job_group, String job_name, String... params) throws Exception{
157
+		GlueFactory.glueFactory.loadInstance(job_group, job_name).execute(params);
162
 	}
158
 	}
163
 	
159
 	
164
 }
160
 }

+ 2 - 13
xxl-job-core/src/main/java/com/xxl/job/core/handler/IJobHandler.java 查看文件

12
 	 * job handler <br><br>
12
 	 * job handler <br><br>
13
 	 * the return Object will be and stored
13
 	 * the return Object will be and stored
14
 	 * @param params
14
 	 * @param params
15
-	 * @return job status
15
+	 * @return void, fail if catch exception
16
 	 * @throws Exception
16
 	 * @throws Exception
17
 	 */
17
 	 */
18
-	public abstract JobHandleStatus execute(String... params) throws Exception;
19
-	
20
-	public static enum JobHandleStatus{
21
-		/**
22
-		 * handle success
23
-		 */
24
-		SUCCESS, 
25
-		/**
26
-		 * handle fail
27
-		 */
28
-		FAIL;
29
-	}
18
+	public abstract void execute(String... params) throws Exception;
30
 	
19
 	
31
 }
20
 }

+ 2 - 2
xxl-job-core/src/main/java/com/xxl/job/core/handler/impl/GlueJobHandler.java 查看文件

17
 	}
17
 	}
18
 
18
 
19
 	@Override
19
 	@Override
20
-	public JobHandleStatus execute(String... params) throws Exception {
21
-		return GlueFactory.glue(job_group, job_name, params);
20
+	public void execute(String... params) throws Exception {
21
+		GlueFactory.glue(job_group, job_name, params);
22
 	}
22
 	}
23
 
23
 
24
 }
24
 }

+ 7 - 6
xxl-job-core/src/main/java/com/xxl/job/core/router/thread/JobThread.java 查看文件

1
 package com.xxl.job.core.router.thread;
1
 package com.xxl.job.core.router.thread;
2
 
2
 
3
 import com.xxl.job.core.handler.IJobHandler;
3
 import com.xxl.job.core.handler.IJobHandler;
4
-import com.xxl.job.core.handler.IJobHandler.JobHandleStatus;
5
 import com.xxl.job.core.log.XxlJobFileAppender;
4
 import com.xxl.job.core.log.XxlJobFileAppender;
6
 import com.xxl.job.core.router.model.RequestModel;
5
 import com.xxl.job.core.router.model.RequestModel;
6
+import com.xxl.job.core.router.model.ResponseModel;
7
 import org.eclipse.jetty.util.ConcurrentHashSet;
7
 import org.eclipse.jetty.util.ConcurrentHashSet;
8
 import org.slf4j.Logger;
8
 import org.slf4j.Logger;
9
 import org.slf4j.LoggerFactory;
9
 import org.slf4j.LoggerFactory;
74
 							? (String[])(Arrays.asList(triggerDate.getExecutorParams().split(",")).toArray()) : null;
74
 							? (String[])(Arrays.asList(triggerDate.getExecutorParams().split(",")).toArray()) : null;
75
 					
75
 					
76
 					// handle job
76
 					// handle job
77
-					JobHandleStatus _status = JobHandleStatus.FAIL;
77
+					String _status = ResponseModel.SUCCESS;
78
 					String _msg = null;
78
 					String _msg = null;
79
 
79
 
80
 					try {
80
 					try {
81
 						XxlJobFileAppender.contextHolder.set(String.valueOf(triggerDate.getLogId()));
81
 						XxlJobFileAppender.contextHolder.set(String.valueOf(triggerDate.getLogId()));
82
 						logger.info("----------- xxl-job job handle start -----------");
82
 						logger.info("----------- xxl-job job handle start -----------");
83
-						_status = handler.execute(handlerParams);
83
+						handler.execute(handlerParams);
84
 					} catch (Exception e) {
84
 					} catch (Exception e) {
85
 						logger.info("JobThread Exception:", e);
85
 						logger.info("JobThread Exception:", e);
86
+						_status = ResponseModel.FAIL;
86
 						StringWriter out = new StringWriter();
87
 						StringWriter out = new StringWriter();
87
 						e.printStackTrace(new PrintWriter(out));
88
 						e.printStackTrace(new PrintWriter(out));
88
 						_msg = out.toString();
89
 						_msg = out.toString();
93
 					// callback handler info
94
 					// callback handler info
94
 					if (!toStop) {
95
 					if (!toStop) {
95
 						// commonm
96
 						// commonm
96
-						triggerDate.setStatus(_status.name());
97
+						triggerDate.setStatus(_status);
97
 						triggerDate.setMsg(_msg);
98
 						triggerDate.setMsg(_msg);
98
 						TriggerCallbackThread.pushCallBack(triggerDate);
99
 						TriggerCallbackThread.pushCallBack(triggerDate);
99
 					} else {
100
 					} else {
100
 						// is killed
101
 						// is killed
101
-						triggerDate.setStatus(JobHandleStatus.FAIL.name());
102
+						triggerDate.setStatus(ResponseModel.FAIL);
102
 						triggerDate.setMsg(stopReason + " [业务运行中,被强制终止]");
103
 						triggerDate.setMsg(stopReason + " [业务运行中,被强制终止]");
103
 						TriggerCallbackThread.pushCallBack(triggerDate);
104
 						TriggerCallbackThread.pushCallBack(triggerDate);
104
 					}
105
 					}
113
 			RequestModel triggerDate = triggerQueue.poll();
114
 			RequestModel triggerDate = triggerQueue.poll();
114
 			if (triggerDate!=null) {
115
 			if (triggerDate!=null) {
115
 				// is killed
116
 				// is killed
116
-				triggerDate.setStatus(JobHandleStatus.FAIL.name());
117
+				triggerDate.setStatus(ResponseModel.FAIL);
117
 				triggerDate.setMsg(stopReason + " [任务尚未执行,在调度队列中被终止]");
118
 				triggerDate.setMsg(stopReason + " [任务尚未执行,在调度队列中被终止]");
118
 				TriggerCallbackThread.pushCallBack(triggerDate);
119
 				TriggerCallbackThread.pushCallBack(triggerDate);
119
 			}
120
 			}

+ 4 - 6
xxl-job-executor-example/src/main/java/com/xxl/job/executor/service/jobhandler/DemoJobHandler.java 查看文件

1
 package com.xxl.job.executor.service.jobhandler;
1
 package com.xxl.job.executor.service.jobhandler;
2
 
2
 
3
-import java.util.concurrent.TimeUnit;
4
-
3
+import com.xxl.job.core.handler.IJobHandler;
4
+import com.xxl.job.core.handler.annotation.JobHander;
5
 import org.slf4j.Logger;
5
 import org.slf4j.Logger;
6
 import org.slf4j.LoggerFactory;
6
 import org.slf4j.LoggerFactory;
7
 import org.springframework.stereotype.Service;
7
 import org.springframework.stereotype.Service;
8
 
8
 
9
-import com.xxl.job.core.handler.IJobHandler;
10
-import com.xxl.job.core.handler.annotation.JobHander;
9
+import java.util.concurrent.TimeUnit;
11
 
10
 
12
 
11
 
13
 /**
12
 /**
26
 	private static transient Logger logger = LoggerFactory.getLogger(DemoJobHandler.class);
25
 	private static transient Logger logger = LoggerFactory.getLogger(DemoJobHandler.class);
27
 	
26
 	
28
 	@Override
27
 	@Override
29
-	public JobHandleStatus execute(String... params) throws Exception {
28
+	public void execute(String... params) throws Exception {
30
 		logger.info("XXL-JOB, Hello World.");
29
 		logger.info("XXL-JOB, Hello World.");
31
 		
30
 		
32
 		for (int i = 0; i < 2; i++) {
31
 		for (int i = 0; i < 2; i++) {
33
 			logger.info("beat at:{}", i);
32
 			logger.info("beat at:{}", i);
34
 			TimeUnit.SECONDS.sleep(2);
33
 			TimeUnit.SECONDS.sleep(2);
35
 		}
34
 		}
36
-		return JobHandleStatus.SUCCESS;
37
 	}
35
 	}
38
 	
36
 	
39
 }
37
 }