Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
X
XXL-JOB
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
靳帅
XXL-JOB
Commits
34299011
提交
34299011
authored
7月 14, 2017
作者:
xuxueli
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
任务触发逻辑重构
上级
5c0b206f
隐藏空白字符变更
内嵌
并排
正在显示
11 个修改的文件
包含
58 行增加
和
82 行删除
+58
-82
ExecutorRouteBusyover.java
.../job/admin/core/route/strategy/ExecutorRouteBusyover.java
+2
-2
ExecutorRouteConsistentHash.java
...dmin/core/route/strategy/ExecutorRouteConsistentHash.java
+0
-2
ExecutorRouteFailover.java
.../job/admin/core/route/strategy/ExecutorRouteFailover.java
+2
-2
ExecutorRouteFirst.java
...xxl/job/admin/core/route/strategy/ExecutorRouteFirst.java
+0
-2
ExecutorRouteLFU.java
...m/xxl/job/admin/core/route/strategy/ExecutorRouteLFU.java
+0
-2
ExecutorRouteLRU.java
...m/xxl/job/admin/core/route/strategy/ExecutorRouteLRU.java
+0
-2
ExecutorRouteLast.java
.../xxl/job/admin/core/route/strategy/ExecutorRouteLast.java
+0
-2
ExecutorRouteRandom.java
...xl/job/admin/core/route/strategy/ExecutorRouteRandom.java
+0
-2
ExecutorRouteRound.java
...xxl/job/admin/core/route/strategy/ExecutorRouteRound.java
+0
-4
XxlJobTrigger.java
...in/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java
+53
-61
application.properties
...ingboot-example/src/main/resources/application.properties
+1
-1
没有找到文件。
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteBusyover.java
浏览文件 @
34299011
...
...
@@ -32,7 +32,7 @@ public class ExecutorRouteBusyover extends ExecutorRouter {
logger
.
error
(
e
.
getMessage
(),
e
);
idleBeatResult
=
new
ReturnT
<
String
>(
ReturnT
.
FAIL_CODE
,
""
+
e
);
}
idleBeatResultSB
.
append
(
"<br>----------------------<br>
"
)
idleBeatResultSB
.
append
(
(
idleBeatResultSB
.
length
()>
0
)?
"<br><br>"
:
"
"
)
.
append
(
"空闲检测:"
)
.
append
(
"<br>address:"
).
append
(
address
)
.
append
(
"<br>code:"
).
append
(
idleBeatResult
.
getCode
())
...
...
@@ -43,7 +43,7 @@ public class ExecutorRouteBusyover extends ExecutorRouter {
jobLog
.
setExecutorAddress
(
address
);
ReturnT
<
String
>
runResult
=
runExecutor
(
triggerParam
,
address
);
idleBeatResultSB
.
append
(
"<br>
----------------------
<br>"
).
append
(
runResult
.
getMsg
());
idleBeatResultSB
.
append
(
"<br><br>"
).
append
(
runResult
.
getMsg
());
return
new
ReturnT
<
String
>(
runResult
.
getCode
(),
idleBeatResultSB
.
toString
());
}
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteConsistentHash.java
浏览文件 @
34299011
...
...
@@ -85,8 +85,6 @@ public class ExecutorRouteConsistentHash extends ExecutorRouter {
// run executor
ReturnT
<
String
>
runResult
=
runExecutor
(
triggerParam
,
address
);
runResult
.
setMsg
(
"<br>----------------------<br>"
+
runResult
.
getMsg
());
return
runResult
;
}
}
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFailover.java
浏览文件 @
34299011
...
...
@@ -32,7 +32,7 @@ public class ExecutorRouteFailover extends ExecutorRouter {
logger
.
error
(
e
.
getMessage
(),
e
);
beatResult
=
new
ReturnT
<
String
>(
ReturnT
.
FAIL_CODE
,
""
+
e
);
}
beatResultSB
.
append
(
"<br>----------------------<br>
"
)
beatResultSB
.
append
(
(
beatResultSB
.
length
()>
0
)?
"<br><br>"
:
"
"
)
.
append
(
"心跳检测:"
)
.
append
(
"<br>address:"
).
append
(
address
)
.
append
(
"<br>code:"
).
append
(
beatResult
.
getCode
())
...
...
@@ -43,7 +43,7 @@ public class ExecutorRouteFailover extends ExecutorRouter {
jobLog
.
setExecutorAddress
(
address
);
ReturnT
<
String
>
runResult
=
runExecutor
(
triggerParam
,
address
);
beatResultSB
.
append
(
"<br>
----------------------
<br>"
).
append
(
runResult
.
getMsg
());
beatResultSB
.
append
(
"<br><br>"
).
append
(
runResult
.
getMsg
());
return
new
ReturnT
<
String
>(
runResult
.
getCode
(),
beatResultSB
.
toString
());
}
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFirst.java
浏览文件 @
34299011
...
...
@@ -25,8 +25,6 @@ public class ExecutorRouteFirst extends ExecutorRouter {
// run executor
ReturnT
<
String
>
runResult
=
runExecutor
(
triggerParam
,
address
);
runResult
.
setMsg
(
"<br>----------------------<br>"
+
runResult
.
getMsg
());
return
runResult
;
}
}
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLFU.java
浏览文件 @
34299011
...
...
@@ -65,8 +65,6 @@ public class ExecutorRouteLFU extends ExecutorRouter {
// run executor
ReturnT
<
String
>
runResult
=
runExecutor
(
triggerParam
,
address
);
runResult
.
setMsg
(
"<br>----------------------<br>"
+
runResult
.
getMsg
());
return
runResult
;
}
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLRU.java
浏览文件 @
34299011
...
...
@@ -64,8 +64,6 @@ public class ExecutorRouteLRU extends ExecutorRouter {
// run executor
ReturnT
<
String
>
runResult
=
runExecutor
(
triggerParam
,
address
);
runResult
.
setMsg
(
"<br>----------------------<br>"
+
runResult
.
getMsg
());
return
runResult
;
}
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLast.java
浏览文件 @
34299011
...
...
@@ -24,8 +24,6 @@ public class ExecutorRouteLast extends ExecutorRouter {
// run executor
ReturnT
<
String
>
runResult
=
runExecutor
(
triggerParam
,
address
);
runResult
.
setMsg
(
"<br>----------------------<br>"
+
runResult
.
getMsg
());
return
runResult
;
}
}
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRandom.java
浏览文件 @
34299011
...
...
@@ -28,8 +28,6 @@ public class ExecutorRouteRandom extends ExecutorRouter {
// run executor
ReturnT
<
String
>
runResult
=
runExecutor
(
triggerParam
,
address
);
runResult
.
setMsg
(
"<br>----------------------<br>"
+
runResult
.
getMsg
());
return
runResult
;
}
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRound.java
浏览文件 @
34299011
...
...
@@ -44,10 +44,6 @@ public class ExecutorRouteRound extends ExecutorRouter {
// run executor
ReturnT
<
String
>
runResult
=
runExecutor
(
triggerParam
,
address
);
runResult
.
setMsg
(
"<br>----------------------<br>"
+
runResult
.
getMsg
());
return
runResult
;
}
}
xxl-job-admin/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java
浏览文件 @
34299011
...
...
@@ -31,87 +31,79 @@ public class XxlJobTrigger {
*/
public
static
void
trigger
(
int
jobId
)
{
// load job
XxlJobInfo
jobInfo
=
XxlJobDynamicScheduler
.
xxlJobInfoDao
.
loadById
(
jobId
);
// load data
XxlJobInfo
jobInfo
=
XxlJobDynamicScheduler
.
xxlJobInfoDao
.
loadById
(
jobId
);
// job info
XxlJobGroup
group
=
XxlJobDynamicScheduler
.
xxlJobGroupDao
.
load
(
jobInfo
.
getJobGroup
());
// group info
// log part-1
ExecutorBlockStrategyEnum
blockStrategy
=
ExecutorBlockStrategyEnum
.
match
(
jobInfo
.
getExecutorBlockStrategy
(),
ExecutorBlockStrategyEnum
.
SERIAL_EXECUTION
);
// block strategy
ExecutorFailStrategyEnum
failStrategy
=
ExecutorFailStrategyEnum
.
match
(
jobInfo
.
getExecutorFailStrategy
(),
ExecutorFailStrategyEnum
.
FAIL_ALARM
);
// fail strategy
ExecutorRouteStrategyEnum
executorRouteStrategyEnum
=
ExecutorRouteStrategyEnum
.
match
(
jobInfo
.
getExecutorRouteStrategy
(),
null
);
// route strategy
ArrayList
<
String
>
addressList
=
(
ArrayList
<
String
>)
group
.
getRegistryList
();
// 1、save log-id
XxlJobLog
jobLog
=
new
XxlJobLog
();
jobLog
.
setJobGroup
(
jobInfo
.
getJobGroup
());
jobLog
.
setJobId
(
jobInfo
.
getId
());
XxlJobDynamicScheduler
.
xxlJobLogDao
.
save
(
jobLog
);
logger
.
debug
(
">>>>>>>>>>> xxl-job trigger start, jobId:{}"
,
jobLog
.
getId
());
//
log part-2 param
//
2、prepare trigger-info
//jobLog.setExecutorAddress(executorAddress);
jobLog
.
setGlueType
(
jobInfo
.
getGlueType
());
jobLog
.
setExecutorHandler
(
jobInfo
.
getExecutorHandler
());
jobLog
.
setExecutorParam
(
jobInfo
.
getExecutorParam
());
jobLog
.
setTriggerTime
(
new
Date
());
// trigger request
TriggerParam
triggerParam
=
new
TriggerParam
();
triggerParam
.
setJobId
(
jobInfo
.
getId
());
triggerParam
.
setExecutorHandler
(
jobInfo
.
getExecutorHandler
());
triggerParam
.
setExecutorParams
(
jobInfo
.
getExecutorParam
());
triggerParam
.
setExecutorBlockStrategy
(
jobInfo
.
getExecutorBlockStrategy
());
triggerParam
.
setGlueType
(
jobInfo
.
getGlueType
());
triggerParam
.
setGlueSource
(
jobInfo
.
getGlueSource
());
triggerParam
.
setGlueUpdatetime
(
jobInfo
.
getGlueUpdatetime
().
getTime
());
triggerParam
.
setLogId
(
jobLog
.
getId
());
triggerParam
.
setLogDateTim
(
jobLog
.
getTriggerTime
().
getTime
());
// do trigger
ReturnT
<
String
>
triggerResult
=
doTrigger
(
triggerParam
,
jobInfo
,
jobLog
);
// fail retry
if
(
triggerResult
.
getCode
()==
ReturnT
.
FAIL_CODE
&&
ExecutorFailStrategyEnum
.
match
(
jobInfo
.
getExecutorFailStrategy
(),
null
)
==
ExecutorFailStrategyEnum
.
FAIL_RETRY
)
{
ReturnT
<
String
>
retryTriggerResult
=
doTrigger
(
triggerParam
,
jobInfo
,
jobLog
);
triggerResult
.
setCode
(
retryTriggerResult
.
getCode
());
triggerResult
.
setMsg
(
triggerResult
.
getMsg
()
+
"<br><br><span style=\"color:#F39C12;\" > >>>>>>>>>>>失败重试<<<<<<<<<<< </span><br><br>"
+
retryTriggerResult
.
getMsg
());
ReturnT
<
String
>
triggerResult
=
new
ReturnT
<
String
>(
null
);
StringBuffer
triggerMsgSb
=
new
StringBuffer
();
triggerMsgSb
.
append
(
"注册方式:"
).
append
(
(
group
.
getAddressType
()
==
0
)?
"自动注册"
:
"手动录入"
);
triggerMsgSb
.
append
(
"<br>阻塞处理策略:"
).
append
(
blockStrategy
.
getTitle
());
triggerMsgSb
.
append
(
"<br>失败处理策略:"
).
append
(
failStrategy
.
getTitle
());
triggerMsgSb
.
append
(
"<br>地址列表:"
).
append
(
group
.
getRegistryList
());
triggerMsgSb
.
append
(
"<br>路由策略:"
).
append
(
executorRouteStrategyEnum
.
getTitle
());
// 3、trigger-valid
if
(
triggerResult
.
getCode
()==
ReturnT
.
SUCCESS_CODE
&&
CollectionUtils
.
isEmpty
(
addressList
))
{
triggerResult
.
setCode
(
ReturnT
.
FAIL_CODE
);
triggerMsgSb
.
append
(
"<br>----------------------<br>"
).
append
(
"调度失败:"
).
append
(
"执行器地址为空"
);
}
if
(
triggerResult
.
getCode
()
==
ReturnT
.
SUCCESS_CODE
&&
executorRouteStrategyEnum
==
null
)
{
triggerResult
.
setCode
(
ReturnT
.
FAIL_CODE
);
triggerMsgSb
.
append
(
"<br>----------------------<br>"
).
append
(
"调度失败:"
).
append
(
"执行器路由策略为空"
);
}
if
(
triggerResult
.
getCode
()
==
ReturnT
.
SUCCESS_CODE
)
{
// 4.1、trigger-param
TriggerParam
triggerParam
=
new
TriggerParam
();
triggerParam
.
setJobId
(
jobInfo
.
getId
());
triggerParam
.
setExecutorHandler
(
jobInfo
.
getExecutorHandler
());
triggerParam
.
setExecutorParams
(
jobInfo
.
getExecutorParam
());
triggerParam
.
setExecutorBlockStrategy
(
jobInfo
.
getExecutorBlockStrategy
());
triggerParam
.
setGlueType
(
jobInfo
.
getGlueType
());
triggerParam
.
setGlueSource
(
jobInfo
.
getGlueSource
());
triggerParam
.
setGlueUpdatetime
(
jobInfo
.
getGlueUpdatetime
().
getTime
());
triggerParam
.
setLogId
(
jobLog
.
getId
());
triggerParam
.
setLogDateTim
(
jobLog
.
getTriggerTime
().
getTime
());
// 4.2、trigger-run (route run / trigger remote executor)
triggerResult
=
executorRouteStrategyEnum
.
getRouter
().
routeRun
(
triggerParam
,
addressList
,
jobLog
);
triggerMsgSb
.
append
(
"<br><br><span style=\"color:#00c0ef;\" > >>>>>>>>>>>触发调度<<<<<<<<<<< </span><br>"
).
append
(
triggerResult
.
getMsg
());
// 4.3、trigger (fail retry)
if
(
triggerResult
.
getCode
()!=
ReturnT
.
SUCCESS_CODE
&&
failStrategy
==
ExecutorFailStrategyEnum
.
FAIL_RETRY
)
{
triggerResult
=
executorRouteStrategyEnum
.
getRouter
().
routeRun
(
triggerParam
,
addressList
,
jobLog
);
triggerMsgSb
.
append
(
"<br><br><span style=\"color:#F39C12;\" > >>>>>>>>>>>失败重试<<<<<<<<<<< </span><br>"
).
append
(
triggerResult
.
getMsg
());
}
}
//
log part-2
//
5、save trigger-info
jobLog
.
setTriggerCode
(
triggerResult
.
getCode
());
jobLog
.
setTriggerMsg
(
trigger
Result
.
getMs
g
());
jobLog
.
setTriggerMsg
(
trigger
MsgSb
.
toStrin
g
());
XxlJobDynamicScheduler
.
xxlJobLogDao
.
updateTriggerInfo
(
jobLog
);
// monitor triger
//
6、
monitor triger
JobFailMonitorHelper
.
monitor
(
jobLog
.
getId
());
logger
.
debug
(
">>>>>>>>>>> xxl-job trigger end, jobId:{}"
,
jobLog
.
getId
());
}
private
static
ReturnT
<
String
>
doTrigger
(
TriggerParam
triggerParam
,
XxlJobInfo
jobInfo
,
XxlJobLog
jobLog
){
StringBuffer
triggerSb
=
new
StringBuffer
();
// exerutor address list
XxlJobGroup
group
=
XxlJobDynamicScheduler
.
xxlJobGroupDao
.
load
(
jobInfo
.
getJobGroup
());
triggerSb
.
append
(
(
group
.
getAddressType
()
==
0
)?
"注册方式:自动注册"
:
"注册方式:手动录入"
);
ArrayList
<
String
>
addressList
=
(
ArrayList
<
String
>)
group
.
getRegistryList
();
triggerSb
.
append
(
"<br>阻塞处理策略:"
).
append
(
ExecutorBlockStrategyEnum
.
match
(
jobInfo
.
getExecutorBlockStrategy
(),
ExecutorBlockStrategyEnum
.
SERIAL_EXECUTION
).
getTitle
());
triggerSb
.
append
(
"<br>失败处理策略:"
).
append
(
ExecutorFailStrategyEnum
.
match
(
jobInfo
.
getExecutorBlockStrategy
(),
ExecutorFailStrategyEnum
.
FAIL_ALARM
).
getTitle
());
triggerSb
.
append
(
"<br>地址列表:"
).
append
(
addressList
!=
null
?
addressList
.
toString
():
""
);
if
(
CollectionUtils
.
isEmpty
(
addressList
))
{
triggerSb
.
append
(
"<br>----------------------<br>"
).
append
(
"调度失败:"
).
append
(
"执行器地址为空"
);
return
new
ReturnT
<
String
>(
ReturnT
.
FAIL_CODE
,
triggerSb
.
toString
());
}
// executor route strategy
ExecutorRouteStrategyEnum
executorRouteStrategyEnum
=
ExecutorRouteStrategyEnum
.
match
(
jobInfo
.
getExecutorRouteStrategy
(),
null
);
if
(
executorRouteStrategyEnum
==
null
)
{
triggerSb
.
append
(
"<br>----------------------<br>"
).
append
(
"调度失败:"
).
append
(
"执行器路由策略为空"
);
return
new
ReturnT
<
String
>(
ReturnT
.
FAIL_CODE
,
triggerSb
.
toString
());
}
triggerSb
.
append
(
"<br>路由策略:"
).
append
(
executorRouteStrategyEnum
.
name
()
+
"-"
+
executorRouteStrategyEnum
.
getTitle
());
// route run / trigger remote executor
ReturnT
<
String
>
routeRunResult
=
executorRouteStrategyEnum
.
getRouter
().
routeRun
(
triggerParam
,
addressList
,
jobLog
);
triggerSb
.
append
(
"<br>----------------------<br>"
).
append
(
routeRunResult
.
getMsg
());
return
new
ReturnT
<
String
>(
routeRunResult
.
getCode
(),
triggerSb
.
toString
());
}
}
xxl-job-executor-springboot-example/src/main/resources/application.properties
浏览文件 @
34299011
...
...
@@ -11,7 +11,7 @@ xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
### xxl-job executor address
xxl.job.executor.appname
=
xxl-job-executor-example
xxl.job.executor.ip
=
xxl.job.executor.port
=
999
9
xxl.job.executor.port
=
999
8
### xxl-job log path
xxl.job.executor.logpath
=
/data/applogs/xxl-job/jobhandler/
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论