跟着nutzbook学习实现了简单的定时任务,现在想问下如何能实现对定时任务的控制,比如我访问一个控制页面,可以通过请求来开启或者关闭定时任务
1 回复
假设使用了nutz-integration-quartz
首先, 注入Scheduler
@Inject
Scheduler scheduler ;
然后,在quartz中,定时任务分2部分, 定时器Trigger和任务Job, 通过下面的代码可以获取全部Trigger和Job
try {
for (String groupName : scheduler.getJobGroupNames()) {
for (JobKey jobKey : scheduler.getJobKeys(GroupMatcher.jobGroupEquals(groupName))) {
String jobName = jobKey.getName();
String jobGroup = jobKey.getGroup();
// get job's trigger
List<Trigger> triggers = (List<Trigger>) scheduler.getTriggersOfJob(jobKey);
Date nextFireTime = triggers.get(0).getNextFireTime();
System.out.println("[jobName] : "
+ jobName
+ " [groupName] : "
+ jobGroup
+ " - "
+ nextFireTime);
}
}
}
catch (SchedulerException e) {
e.printStackTrace();
}
最后,就是如何"控制"的问题, 按你的说法, 就是Trigger增删改的方法了
// 暂停一个Job及其相关的Trigger
scheduler.pauseJob(jobKey);
// 恢复一个Job
scheduler.resumeJob(jobKey);
// 移除一个Job
scheduler.deleteJob(jobKey);
参考来源:
https://www.mkyong.com/java/how-to-list-all-jobs-in-the-quartz-scheduler/
http://stackoverflow.com/questions/1904064/delete-trigger-in-quartz
http://stackoverflow.com/questions/18467320/how-to-stop-interrupt-quartz-scheduler-job-manually
添加回复
请先登陆