如何在石英调度程序中暂停工作?

时间:2011-10-13 09:23:10

标签: java spring quartz-scheduler

您好我正在创建一个基于cron表达式执行类方法的应用程序。为此,我使用spring quartz,我必须在我的spring文件中配置所有这些东西,它工作正常,并且作业正在基于cron表达式执行,但现在我想暂停基于java类的特定作业的下一次执行从UI中选择用户。那有什么办法吗?

我可以在上下文中获取所有正在运行的作业的详细信息吗?如果是,那么我可以过滤作业并尝试暂停该作业以便下次执行。

4 个答案:

答案 0 :(得分:7)

注入SchedulerFactoryBean。使用它的getScheduler方法获取石英Scheduler并使用rescheduleJob或来自quartz API的其他方法来执行您的任务。

答案 1 :(得分:5)

我通过使用以下代码

来完成它

stdScheduler是scheduleFactoryBean

 String groupnames[] = stdScheduler.getJobGroupNames();
 for (String groupName : groupnames) {
     String[] jobNames = stdScheduler.getJobNames(groupName);
     for (String jobName : jobNames) {
            if (jobName.equals("jobName")) {
                    stdScheduler.pauseJob(jobName, groupName);
            }
     }
 }          

答案 2 :(得分:5)

我们可以使用stdScheduler.pauseJob(JobKey jobKey)方法来减少上面代码中提到的循环次数

答案 3 :(得分:0)

如果您通过注入或其他方式获得SchedulerFactoryBean,则有方便的方法:

schedulerFactoryBean.getScheduler().standby();
schedulerFactoryBean.getScheduler().start();

直接使用Quartz也可以:

@Autowired
private Scheduler scheduler;

...
scheduler.standby();
...
scheduler.start();