NutzCN Logo
问答 如何实现对定时任务的控制
发布于 3076天前 作者 LuoYY 3966 次浏览 复制 上一个帖子 下一个帖子
标签:

跟着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

添加回复
请先登陆
回到顶部