Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
aboota
xxl-job
提交
67fc5a18
X
xxl-job
项目概览
aboota
/
xxl-job
与 Fork 源项目一致
从无法访问的项目Fork
通知
10
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
X
xxl-job
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
67fc5a18
编写于
9月 23, 2018
作者:
许雪里
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
任务触发时支持动态传参,调度中心与API服务均提供提供动态参数功能
上级
dea702f6
变更
9
显示空白变更内容
内联
并排
Showing
9 changed file
with
105 addition
and
20 deletion
+105
-20
doc/XXL-JOB官方文档.md
doc/XXL-JOB官方文档.md
+3
-4
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java
.../java/com/xxl/job/admin/controller/JobInfoController.java
+7
-2
xxl-job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java
...ava/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java
+1
-1
xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobFailMonitorHelper.java
...a/com/xxl/job/admin/core/thread/JobFailMonitorHelper.java
+1
-1
xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobTriggerPoolHelper.java
...a/com/xxl/job/admin/core/thread/JobTriggerPoolHelper.java
+9
-5
xxl-job-admin/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java
...in/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java
+9
-2
xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/AdminBizImpl.java
...ain/java/com/xxl/job/admin/service/impl/AdminBizImpl.java
+1
-1
xxl-job-admin/src/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl
...rc/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl
+29
-0
xxl-job-admin/src/main/webapp/static/js/jobinfo.index.1.js
xxl-job-admin/src/main/webapp/static/js/jobinfo.index.1.js
+45
-4
未找到文件。
doc/XXL-JOB官方文档.md
浏览文件 @
67fc5a18
...
...
@@ -1283,7 +1283,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
-
33、修复表字段 “t.order”与数据库关键字冲突查询失败的问题,
-
34、调度中心提供API服务,支持通过API服务对任务进行查询、新增、更新、启停等操作;
-
35、分片任务失败重试优化,仅重试当前失败的分片;
-
36、任务
参数数据框调整,手动触发时支持动态输入参数
;
-
36、任务
触发时支持动态传参,调度中心与API服务均提供提供动态参数功能
;
### TODO LIST
...
...
@@ -1298,7 +1298,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
-
9、执行器Log清理功能:调度中心Log删除时同步删除执行器中的Log文件;
-
10、Bean模式任务,JobHandler自动从执行器中查询展示为下拉框,选择后自动填充任务名称等属性;
-
11、API事件触发类型任务(更类似MQ消息)支持"动态传参、延时消费";该类型任务不走Quartz,单独建立MQ消息表,调度中心竞争触发;待定,该功能与 XXL-MQ 冲突,该场景建议用后者;
-
12、
API任务触发时支持动态传参
;
-
12、
调度线程池改为协程方式实现,大幅降低系统内存消耗
;
-
13、任务依赖增强,新增任务类型 "流程任务",流程节点可挂载普通类型任务,承担任务依赖功能。现有子任务模型取消;需要考虑任务依赖死循环问题;
-
14、任务告警逻辑调整:任务调度,以及任务回调失败时,均推送监控队列。后期考虑通过任务Log字段控制告警状态;
-
15、新增任务默认运行状态,任务更新时运行状态保持不变;
...
...
@@ -1306,8 +1306,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
-
17、注册中心支持扩展,除默认基于DB之外,支持扩展接入第三方注册中心如zk、eureka等;
-
18、流程任务,支持参数传递;
-
19、SimpleTrigger 支持;
-
20、调度线程池改为协程方式实现,大幅降低系统内存消耗;
-
21、Release发布时,一同发布调度中心安装包,真正实现开箱即用;
-
20、Release发布时,一同发布调度中心安装包,真正实现开箱即用;
## 七、其他
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java
浏览文件 @
67fc5a18
...
...
@@ -91,8 +91,13 @@ public class JobInfoController {
@RequestMapping
(
"/trigger"
)
@ResponseBody
//@PermessionLimit(limit = false)
public
ReturnT
<
String
>
triggerJob
(
int
id
)
{
JobTriggerPoolHelper
.
trigger
(
id
,
TriggerTypeEnum
.
MANUAL
,
-
1
,
null
);
public
ReturnT
<
String
>
triggerJob
(
int
id
,
String
executorParam
)
{
// force cover job param
if
(
executorParam
==
null
)
{
executorParam
=
""
;
}
JobTriggerPoolHelper
.
trigger
(
id
,
TriggerTypeEnum
.
MANUAL
,
-
1
,
null
,
executorParam
);
return
ReturnT
.
SUCCESS
;
}
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java
浏览文件 @
67fc5a18
...
...
@@ -29,7 +29,7 @@ public class RemoteHttpJobBean extends QuartzJobBean {
// trigger
//XxlJobTrigger.trigger(jobId);
JobTriggerPoolHelper
.
trigger
(
jobId
,
TriggerTypeEnum
.
CRON
,
-
1
,
null
);
JobTriggerPoolHelper
.
trigger
(
jobId
,
TriggerTypeEnum
.
CRON
,
-
1
,
null
,
null
);
}
}
\ No newline at end of file
xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobFailMonitorHelper.java
浏览文件 @
67fc5a18
...
...
@@ -73,7 +73,7 @@ public class JobFailMonitorHelper {
XxlJobInfo
info
=
XxlJobDynamicScheduler
.
xxlJobInfoDao
.
loadById
(
log
.
getJobId
());
if
(
log
.
getExecutorFailRetryCount
()
>
0
)
{
JobTriggerPoolHelper
.
trigger
(
log
.
getJobId
(),
TriggerTypeEnum
.
RETRY
,
(
log
.
getExecutorFailRetryCount
()-
1
),
log
.
getExecutorShardingParam
());
JobTriggerPoolHelper
.
trigger
(
log
.
getJobId
(),
TriggerTypeEnum
.
RETRY
,
(
log
.
getExecutorFailRetryCount
()-
1
),
log
.
getExecutorShardingParam
()
,
null
);
String
retryMsg
=
"<br><br><span style=\"color:#F39C12;\" > >>>>>>>>>>>"
+
I18nUtil
.
getString
(
"jobconf_trigger_type_retry"
)
+
"<<<<<<<<<<< </span><br>"
;
log
.
setTriggerMsg
(
log
.
getTriggerMsg
()
+
retryMsg
);
XxlJobDynamicScheduler
.
xxlJobLogDao
.
updateTriggerInfo
(
log
);
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobTriggerPoolHelper.java
浏览文件 @
67fc5a18
...
...
@@ -29,11 +29,11 @@ public class JobTriggerPoolHelper {
new
ThreadPoolExecutor
.
CallerRunsPolicy
());
public
void
addTrigger
(
final
int
jobId
,
final
TriggerTypeEnum
triggerType
,
final
int
failRetryCount
,
final
String
executorShardingParam
)
{
public
void
addTrigger
(
final
int
jobId
,
final
TriggerTypeEnum
triggerType
,
final
int
failRetryCount
,
final
String
executorShardingParam
,
final
String
executorParam
)
{
triggerPool
.
execute
(
new
Runnable
()
{
@Override
public
void
run
()
{
XxlJobTrigger
.
trigger
(
jobId
,
triggerType
,
failRetryCount
,
executorShardingParam
);
XxlJobTrigger
.
trigger
(
jobId
,
triggerType
,
failRetryCount
,
executorShardingParam
,
executorParam
);
}
});
}
...
...
@@ -50,13 +50,17 @@ public class JobTriggerPoolHelper {
/**
* @param jobId
* @param triggerType
* @param failRetryCount
* >=0: use this param
* <0: use param from job info config
*
* @param executorShardingParam
* @param executorParam
* null: use job param
* not null: cover job param
*/
public
static
void
trigger
(
int
jobId
,
TriggerTypeEnum
triggerType
,
int
failRetryCount
,
String
executorShardingParam
)
{
helper
.
addTrigger
(
jobId
,
triggerType
,
failRetryCount
,
executorShardingParam
);
public
static
void
trigger
(
int
jobId
,
TriggerTypeEnum
triggerType
,
int
failRetryCount
,
String
executorShardingParam
,
String
executorParam
)
{
helper
.
addTrigger
(
jobId
,
triggerType
,
failRetryCount
,
executorShardingParam
,
executorParam
);
}
public
static
void
toStop
()
{
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java
浏览文件 @
67fc5a18
...
...
@@ -30,18 +30,25 @@ public class XxlJobTrigger {
* trigger job
*
* @param jobId
* @param triggerType
* @param failRetryCount
* >=0: use this param
* <0: use param from job info config
*
* @param executorShardingParam
* @param executorParam
* null: use job param
* not null: cover job param
*/
public
static
void
trigger
(
int
jobId
,
TriggerTypeEnum
triggerType
,
int
failRetryCount
,
String
executorShardingParam
)
{
public
static
void
trigger
(
int
jobId
,
TriggerTypeEnum
triggerType
,
int
failRetryCount
,
String
executorShardingParam
,
String
executorParam
)
{
// load data
XxlJobInfo
jobInfo
=
XxlJobDynamicScheduler
.
xxlJobInfoDao
.
loadById
(
jobId
);
if
(
jobInfo
==
null
)
{
logger
.
warn
(
">>>>>>>>>>>> trigger fail, jobId invalid,jobId={}"
,
jobId
);
return
;
}
if
(
executorParam
!=
null
)
{
jobInfo
.
setExecutorParam
(
executorParam
);
}
int
finalFailRetryCount
=
failRetryCount
>=
0
?
failRetryCount:
jobInfo
.
getExecutorFailRetryCount
();
XxlJobGroup
group
=
XxlJobDynamicScheduler
.
xxlJobGroupDao
.
load
(
jobInfo
.
getJobGroup
());
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/AdminBizImpl.java
浏览文件 @
67fc5a18
...
...
@@ -71,7 +71,7 @@ public class AdminBizImpl implements AdminBiz {
int
childJobId
=
(
StringUtils
.
isNotBlank
(
childJobIds
[
i
])
&&
StringUtils
.
isNumeric
(
childJobIds
[
i
]))?
Integer
.
valueOf
(
childJobIds
[
i
]):-
1
;
if
(
childJobId
>
0
)
{
JobTriggerPoolHelper
.
trigger
(
childJobId
,
TriggerTypeEnum
.
PARENT
,
0
,
null
);
JobTriggerPoolHelper
.
trigger
(
childJobId
,
TriggerTypeEnum
.
PARENT
,
0
,
null
,
null
);
ReturnT
<
String
>
triggerChildResult
=
ReturnT
.
SUCCESS
;
// add msg
...
...
xxl-job-admin/src/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl
浏览文件 @
67fc5a18
...
...
@@ -380,6 +380,35 @@ exit 0
</div>
</div>
<
#--
trigger
--
>
<div
class=
"modal fade"
id=
"jobTriggerModal"
tabindex=
"-1"
role=
"dialog"
aria-hidden=
"true"
>
<div
class=
"modal-dialog "
>
<div
class=
"modal-content"
>
<div
class=
"modal-header"
>
<h4
class=
"modal-title"
>
${I18n.jobinfo_opt_run}
</h4>
</div>
<div
class=
"modal-body"
>
<form
class=
"form-horizontal form"
role=
"form"
>
<div
class=
"form-group"
>
<label
for=
"firstname"
class=
"col-sm-2 control-label"
>
${I18n.jobinfo_field_executorparam}
<font
color=
"black"
>
*
</font></label>
<div
class=
"col-sm-10"
>
<textarea
class=
"textarea form-control"
name=
"executorParam"
placeholder=
"${I18n.system_please_input}${I18n.jobinfo_field_executorparam}"
maxlength=
"512"
style=
"height: 63px; line-height: 1.2;"
></textarea>
</div>
</div>
<hr>
<div
class=
"form-group"
>
<div
class=
"col-sm-offset-3 col-sm-6"
>
<button
type=
"button"
class=
"btn btn-primary ok"
>
${I18n.system_save}
</button>
<button
type=
"button"
class=
"btn btn-default"
data-dismiss=
"modal"
>
${I18n.system_cancel}
</button>
<input
type=
"hidden"
name=
"id"
>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<
@
netCommon.commonScript
/>
<!-- DataTables -->
<script
src=
"${request.contextPath}/static/adminlte/plugins/datatables/jquery.dataTables.min.js"
></script>
...
...
xxl-job-admin/src/main/webapp/static/js/jobinfo.index.1.js
浏览文件 @
67fc5a18
...
...
@@ -122,7 +122,7 @@ $(function() {
// html
tableData
[
'
key
'
+
row
.
id
]
=
row
;
var
html
=
'
<p id="
'
+
row
.
id
+
'
" >
'
+
'
<button class="btn btn-primary btn-xs job_
operate" _type="job_
trigger" type="button">
'
+
I18n
.
jobinfo_opt_run
+
'
</button>
'
+
'
<button class="btn btn-primary btn-xs job_trigger" type="button">
'
+
I18n
.
jobinfo_opt_run
+
'
</button>
'
+
pause_resume
+
'
<button class="btn btn-primary btn-xs" type="job_del" type="button" onclick="javascript:window.open(
\'
'
+
logUrl
+
'
\'
)" >
'
+
I18n
.
jobinfo_opt_log
+
'
</button><br>
'
+
'
<button class="btn btn-warning btn-xs update" type="button">
'
+
I18n
.
system_opt_edit
+
'
</button>
'
+
...
...
@@ -195,9 +195,6 @@ $(function() {
typeName
=
I18n
.
system_opt_del
;
url
=
base_url
+
"
/jobinfo/remove
"
;
needFresh
=
true
;
}
else
if
(
"
job_trigger
"
==
type
)
{
typeName
=
I18n
.
jobinfo_opt_run
;
url
=
base_url
+
"
/jobinfo/trigger
"
;
}
else
{
return
;
}
...
...
@@ -246,6 +243,50 @@ $(function() {
});
});
// job trigger
$
(
"
#job_list
"
).
on
(
'
click
'
,
'
.job_trigger
'
,
function
()
{
var
id
=
$
(
this
).
parent
(
'
p
'
).
attr
(
"
id
"
);
var
row
=
tableData
[
'
key
'
+
id
];
$
(
"
#jobTriggerModal .form input[name='id']
"
).
val
(
row
.
id
);
$
(
"
#jobTriggerModal .form textarea[name='executorParam']
"
).
val
(
row
.
executorParam
);
$
(
'
#jobTriggerModal
'
).
modal
({
backdrop
:
false
,
keyboard
:
false
}).
modal
(
'
show
'
);
});
$
(
"
#jobTriggerModal .ok
"
).
on
(
'
click
'
,
function
()
{
$
.
ajax
({
type
:
'
POST
'
,
url
:
base_url
+
"
/jobinfo/trigger
"
,
data
:
{
"
id
"
:
$
(
"
#jobTriggerModal .form input[name='id']
"
).
val
(),
"
executorParam
"
:
$
(
"
#jobTriggerModal .textarea[name='executorParam']
"
).
val
()
},
dataType
:
"
json
"
,
success
:
function
(
data
){
if
(
data
.
code
==
200
)
{
$
(
'
#jobTriggerModal
'
).
modal
(
'
hide
'
);
layer
.
open
({
title
:
I18n
.
system_tips
,
btn
:
[
I18n
.
system_ok
],
content
:
I18n
.
jobinfo_opt_run
+
I18n
.
system_success
,
icon
:
'
1
'
});
}
else
{
layer
.
open
({
title
:
I18n
.
system_tips
,
btn
:
[
I18n
.
system_ok
],
content
:
(
data
.
msg
||
I18n
.
jobinfo_opt_run
+
I18n
.
system_fail
),
icon
:
'
2
'
});
}
}
});
});
$
(
"
#jobTriggerModal
"
).
on
(
'
hide.bs.modal
'
,
function
()
{
$
(
"
#jobTriggerModal .form
"
)[
0
].
reset
();
});
// add
$
(
"
.add
"
).
click
(
function
(){
$
(
'
#addModal
'
).
modal
({
backdrop
:
false
,
keyboard
:
false
}).
modal
(
'
show
'
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录