Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
X
XXL-JOB
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
靳帅
XXL-JOB
Commits
148b7ca5
提交
148b7ca5
authored
9月 06, 2016
作者:
xueli.xue
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
IJobHandler取消任务返回值,原通过返回值判断执行状态,逻辑改为:默认任务执行成功,仅在捕获异常时认定任务执行失败。
上级
6b0d17a4
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
33 行增加
和
50 行删除
+33
-50
README.md
README.md
+5
-3
jobinfo.index.ftl
...rc/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl
+3
-5
XxlJobLogTest.java
...min/src/test/java/com/xxl/job/dao/impl/XxlJobLogTest.java
+1
-2
GlueFactory.java
...core/src/main/java/com/xxl/job/core/glue/GlueFactory.java
+9
-13
IJobHandler.java
...e/src/main/java/com/xxl/job/core/handler/IJobHandler.java
+2
-13
GlueJobHandler.java
...in/java/com/xxl/job/core/handler/impl/GlueJobHandler.java
+2
-2
JobThread.java
...c/main/java/com/xxl/job/core/router/thread/JobThread.java
+7
-6
DemoJobHandler.java
...m/xxl/job/executor/service/jobhandler/DemoJobHandler.java
+4
-6
没有找到文件。
README.md
浏览文件 @
148b7ca5
...
...
@@ -589,9 +589,11 @@ XXL-JOB会为每次调度请求生成一个单独的日志文件,通过重写L
-
1、groupId从com.xxl改为com.xuxueli,为推送maven中央仓库做前期准备;
-
2、系统版本不在维护在项目跟pom中,各个子模块单独配置版本配置,解决子模块无法单独编译的问题;
-
3、底层RPC通讯,传输数据的字节长度统计规则优化,可节省50%数据传输量;
-
4、系统公共弹框功能,插件化;
-
5、底层表结构,表明统一大写;
-
6、调度中心,异常处理器JSON响应的ContentType修改,修复浏览器不识别的问题;
-
4、IJobHandler取消任务返回值,原通过返回值判断执行状态,逻辑改为:默认任务执行成功,仅在捕获异常时认定任务执行失败。
-
5、系统公共弹框功能,插件化;
-
6、底层表结构,表明统一大写;
-
7、调度中心,异常处理器JSON响应的ContentType修改,修复浏览器不识别的问题;
Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段, 地址见分支
[
V1.3
](
https://github.com/xuxueli/xxl-job/tree/v1.3
)
。新特性将会在master分支持续更新。
...
...
xxl-job-admin/src/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl
浏览文件 @
148b7ca5
...
...
@@ -169,15 +169,13 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.IJobHandler.JobHandleStatus;
public class DemoJobHandler extends IJobHandler {
private static transient Logger logger = LoggerFactory.getLogger(DemoJobHandler.class);
public class Demo
Glue
JobHandler extends IJobHandler {
private static transient Logger logger = LoggerFactory.getLogger(Demo
Glue
JobHandler.class);
@Override
public
JobHandleStatus
execute(String... params) throws Exception {
public
void
execute(String... params) throws Exception {
logger.info("XXL-JOB, Hello World.");
return JobHandleStatus.SUCCESS;
}
}
...
...
xxl-job-admin/src/test/java/com/xxl/job/dao/impl/XxlJobLogTest.java
浏览文件 @
148b7ca5
...
...
@@ -2,7 +2,6 @@ package com.xxl.job.dao.impl;
import
com.xxl.job.admin.core.model.XxlJobLog
;
import
com.xxl.job.admin.dao.IXxlJobLogDao
;
import
com.xxl.job.core.handler.IJobHandler
;
import
com.xxl.job.core.router.model.ResponseModel
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
...
...
@@ -45,7 +44,7 @@ public class XxlJobLogTest {
public
void
updateHandleInfo
(){
XxlJobLog
xxlJobLog
=
xxlJobLogDao
.
load
(
29
);
xxlJobLog
.
setHandleTime
(
new
Date
());
xxlJobLog
.
setHandleStatus
(
IJobHandler
.
JobHandleStatus
.
SUCCESS
.
name
()
);
xxlJobLog
.
setHandleStatus
(
ResponseModel
.
SUCCESS
);
xxlJobLog
.
setHandleMsg
(
"handle msg"
);
xxlJobLogDao
.
updateHandleInfo
(
xxlJobLog
);
}
...
...
xxl-job-core/src/main/java/com/xxl/job/core/glue/GlueFactory.java
浏览文件 @
148b7ca5
package
com
.
xxl
.
job
.
core
.
glue
;
import
java.lang.reflect.Field
;
import
java.lang.reflect.Modifier
;
import
javax.annotation.Resource
;
import
com.xxl.job.core.glue.cache.LocalCache
;
import
com.xxl.job.core.glue.loader.GlueLoader
;
import
com.xxl.job.core.handler.IJobHandler
;
import
groovy.lang.GroovyClassLoader
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.BeansException
;
...
...
@@ -13,12 +12,9 @@ import org.springframework.context.ApplicationContext;
import
org.springframework.context.ApplicationContextAware
;
import
org.springframework.core.annotation.AnnotationUtils
;
import
com.xxl.job.core.glue.cache.LocalCache
;
import
com.xxl.job.core.glue.loader.GlueLoader
;
import
com.xxl.job.core.handler.IJobHandler
;
import
com.xxl.job.core.handler.IJobHandler.JobHandleStatus
;
import
groovy.lang.GroovyClassLoader
;
import
javax.annotation.Resource
;
import
java.lang.reflect.Field
;
import
java.lang.reflect.Modifier
;
/**
* glue factory, product class/object by name
...
...
@@ -157,8 +153,8 @@ public class GlueFactory implements ApplicationContextAware {
}
// ----------------------------- util -----------------------------
public
static
JobHandleStatus
glue
(
String
job_group
,
String
job_name
,
String
...
params
)
throws
Exception
{
return
GlueFactory
.
glueFactory
.
loadInstance
(
job_group
,
job_name
).
execute
(
params
);
public
static
void
glue
(
String
job_group
,
String
job_name
,
String
...
params
)
throws
Exception
{
GlueFactory
.
glueFactory
.
loadInstance
(
job_group
,
job_name
).
execute
(
params
);
}
}
xxl-job-core/src/main/java/com/xxl/job/core/handler/IJobHandler.java
浏览文件 @
148b7ca5
...
...
@@ -12,20 +12,9 @@ public abstract class IJobHandler extends HandlerRouter {
* job handler <br><br>
* the return Object will be and stored
* @param params
* @return
job status
* @return
void, fail if catch exception
* @throws Exception
*/
public
abstract
JobHandleStatus
execute
(
String
...
params
)
throws
Exception
;
public
static
enum
JobHandleStatus
{
/**
* handle success
*/
SUCCESS
,
/**
* handle fail
*/
FAIL
;
}
public
abstract
void
execute
(
String
...
params
)
throws
Exception
;
}
xxl-job-core/src/main/java/com/xxl/job/core/handler/impl/GlueJobHandler.java
浏览文件 @
148b7ca5
...
...
@@ -17,8 +17,8 @@ public class GlueJobHandler extends IJobHandler {
}
@Override
public
JobHandleStatus
execute
(
String
...
params
)
throws
Exception
{
return
GlueFactory
.
glue
(
job_group
,
job_name
,
params
);
public
void
execute
(
String
...
params
)
throws
Exception
{
GlueFactory
.
glue
(
job_group
,
job_name
,
params
);
}
}
xxl-job-core/src/main/java/com/xxl/job/core/router/thread/JobThread.java
浏览文件 @
148b7ca5
package
com
.
xxl
.
job
.
core
.
router
.
thread
;
import
com.xxl.job.core.handler.IJobHandler
;
import
com.xxl.job.core.handler.IJobHandler.JobHandleStatus
;
import
com.xxl.job.core.log.XxlJobFileAppender
;
import
com.xxl.job.core.router.model.RequestModel
;
import
com.xxl.job.core.router.model.ResponseModel
;
import
org.eclipse.jetty.util.ConcurrentHashSet
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -74,15 +74,16 @@ public class JobThread extends Thread{
?
(
String
[])(
Arrays
.
asList
(
triggerDate
.
getExecutorParams
().
split
(
","
)).
toArray
())
:
null
;
// handle job
JobHandleStatus
_status
=
JobHandleStatus
.
FAIL
;
String
_status
=
ResponseModel
.
SUCCESS
;
String
_msg
=
null
;
try
{
XxlJobFileAppender
.
contextHolder
.
set
(
String
.
valueOf
(
triggerDate
.
getLogId
()));
logger
.
info
(
"----------- xxl-job job handle start -----------"
);
_status
=
handler
.
execute
(
handlerParams
);
handler
.
execute
(
handlerParams
);
}
catch
(
Exception
e
)
{
logger
.
info
(
"JobThread Exception:"
,
e
);
_status
=
ResponseModel
.
FAIL
;
StringWriter
out
=
new
StringWriter
();
e
.
printStackTrace
(
new
PrintWriter
(
out
));
_msg
=
out
.
toString
();
...
...
@@ -93,12 +94,12 @@ public class JobThread extends Thread{
// callback handler info
if
(!
toStop
)
{
// commonm
triggerDate
.
setStatus
(
_status
.
name
()
);
triggerDate
.
setStatus
(
_status
);
triggerDate
.
setMsg
(
_msg
);
TriggerCallbackThread
.
pushCallBack
(
triggerDate
);
}
else
{
// is killed
triggerDate
.
setStatus
(
JobHandleStatus
.
FAIL
.
name
()
);
triggerDate
.
setStatus
(
ResponseModel
.
FAIL
);
triggerDate
.
setMsg
(
stopReason
+
" [业务运行中,被强制终止]"
);
TriggerCallbackThread
.
pushCallBack
(
triggerDate
);
}
...
...
@@ -113,7 +114,7 @@ public class JobThread extends Thread{
RequestModel
triggerDate
=
triggerQueue
.
poll
();
if
(
triggerDate
!=
null
)
{
// is killed
triggerDate
.
setStatus
(
JobHandleStatus
.
FAIL
.
name
()
);
triggerDate
.
setStatus
(
ResponseModel
.
FAIL
);
triggerDate
.
setMsg
(
stopReason
+
" [任务尚未执行,在调度队列中被终止]"
);
TriggerCallbackThread
.
pushCallBack
(
triggerDate
);
}
...
...
xxl-job-executor-example/src/main/java/com/xxl/job/executor/service/jobhandler/DemoJobHandler.java
浏览文件 @
148b7ca5
package
com
.
xxl
.
job
.
executor
.
service
.
jobhandler
;
import
java.util.concurrent.TimeUnit
;
import
com.xxl.job.core.handler.IJobHandler
;
import
com.xxl.job.core.handler.annotation.JobHander
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.stereotype.Service
;
import
com.xxl.job.core.handler.IJobHandler
;
import
com.xxl.job.core.handler.annotation.JobHander
;
import
java.util.concurrent.TimeUnit
;
/**
...
...
@@ -26,14 +25,13 @@ public class DemoJobHandler extends IJobHandler {
private
static
transient
Logger
logger
=
LoggerFactory
.
getLogger
(
DemoJobHandler
.
class
);
@Override
public
JobHandleStatus
execute
(
String
...
params
)
throws
Exception
{
public
void
execute
(
String
...
params
)
throws
Exception
{
logger
.
info
(
"XXL-JOB, Hello World."
);
for
(
int
i
=
0
;
i
<
2
;
i
++)
{
logger
.
info
(
"beat at:{}"
,
i
);
TimeUnit
.
SECONDS
.
sleep
(
2
);
}
return
JobHandleStatus
.
SUCCESS
;
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论