Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
X
XXL-JOB
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
靳帅
XXL-JOB
Commits
25cf93fd
提交
25cf93fd
authored
5月 24, 2017
作者:
xueli.xue
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
任务Cron更新逻辑优化,改为rescheduleJob,同时防止cron重复设置;
上级
54d92de7
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
37 行增加
和
19 行删除
+37
-19
README.md
README.md
+3
-0
XxlJobDynamicScheduler.java
...m/xxl/job/admin/core/schedule/XxlJobDynamicScheduler.java
+34
-19
没有找到文件。
README.md
浏览文件 @
25cf93fd
...
...
@@ -847,6 +847,9 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
-
5、执行参数编辑时丢失问题修复;
-
6、新增任务测试Demo,方便在开发时进行任务逻辑测试;
#### 6.16 版本 V1.8.0 特性[Coding]
-
1、任务Cron更新逻辑优化,改为rescheduleJob,同时防止cron重复设置;
#### TODO LIST
-
1、任务权限管理:执行器为粒度分配权限,核心操作校验权限;
-
2、任务分片:一个任务被拆分成N个独立的任务单元,然后由分布式部署的执行器分别执行某一个或几个分片单元;
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/core/schedule/XxlJobDynamicScheduler.java
浏览文件 @
25cf93fd
...
...
@@ -193,25 +193,40 @@ public final class XxlJobDynamicScheduler implements ApplicationContextAware, In
// TriggerKey : name + group
TriggerKey
triggerKey
=
TriggerKey
.
triggerKey
(
jobName
,
jobGroup
);
JobKey
jobKey
=
new
JobKey
(
jobName
,
jobGroup
);
// CronTrigger : TriggerKey + cronExpression
CronScheduleBuilder
cronScheduleBuilder
=
CronScheduleBuilder
.
cronSchedule
(
cronExpression
).
withMisfireHandlingInstructionDoNothing
();
CronTrigger
cronTrigger
=
TriggerBuilder
.
newTrigger
().
withIdentity
(
triggerKey
).
withSchedule
(
cronScheduleBuilder
).
build
();
//scheduler.rescheduleJob(triggerKey, cronTrigger);
// JobDetail-JobDataMap fresh
JobDetail
jobDetail
=
scheduler
.
getJobDetail
(
jobKey
);
/*JobDataMap jobDataMap = jobDetail.getJobDataMap();
jobDataMap.clear();
jobDataMap.putAll(JacksonUtil.readValue(jobInfo.getJobData(), Map.class));*/
// Trigger fresh
HashSet
<
Trigger
>
triggerSet
=
new
HashSet
<
Trigger
>();
triggerSet
.
add
(
cronTrigger
);
scheduler
.
scheduleJob
(
jobDetail
,
triggerSet
,
true
);
CronTrigger
oldTrigger
=
(
CronTrigger
)
scheduler
.
getTrigger
(
triggerKey
);
if
(
oldTrigger
!=
null
)
{
// avoid repeat
String
oldCron
=
oldTrigger
.
getCronExpression
();
if
(
oldCron
.
equals
(
cronExpression
)){
return
true
;
}
// CronTrigger : TriggerKey + cronExpression
CronScheduleBuilder
cronScheduleBuilder
=
CronScheduleBuilder
.
cronSchedule
(
cronExpression
).
withMisfireHandlingInstructionDoNothing
();
oldTrigger
=
oldTrigger
.
getTriggerBuilder
().
withIdentity
(
triggerKey
).
withSchedule
(
cronScheduleBuilder
).
build
();
// rescheduleJob
scheduler
.
rescheduleJob
(
triggerKey
,
oldTrigger
);
}
else
{
// CronTrigger : TriggerKey + cronExpression
CronScheduleBuilder
cronScheduleBuilder
=
CronScheduleBuilder
.
cronSchedule
(
cronExpression
).
withMisfireHandlingInstructionDoNothing
();
CronTrigger
cronTrigger
=
TriggerBuilder
.
newTrigger
().
withIdentity
(
triggerKey
).
withSchedule
(
cronScheduleBuilder
).
build
();
// JobDetail-JobDataMap fresh
JobKey
jobKey
=
new
JobKey
(
jobName
,
jobGroup
);
JobDetail
jobDetail
=
scheduler
.
getJobDetail
(
jobKey
);
/*JobDataMap jobDataMap = jobDetail.getJobDataMap();
jobDataMap.clear();
jobDataMap.putAll(JacksonUtil.readValue(jobInfo.getJobData(), Map.class));*/
// Trigger fresh
HashSet
<
Trigger
>
triggerSet
=
new
HashSet
<
Trigger
>();
triggerSet
.
add
(
cronTrigger
);
scheduler
.
scheduleJob
(
jobDetail
,
triggerSet
,
true
);
}
logger
.
info
(
">>>>>>>>>>> resumeJob success, JobGroup:{}, JobName:{}"
,
jobGroup
,
jobName
);
return
true
;
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论