简体   繁体   中英

how to suspend job in quartz scheduler?

Hi i am creating an application that executes the method of a class based on a cron expression. For that i am using spring quartz in which i have to configure all these stuffs in my spring-file it works fine and jobs are executing based on the cron expression, But now i want to suspend the next execution of particular job in java class based on the choice of a user from UI. Then is there any way to do this ??

can i get the details of all running job it the context ? if so then i can filter the jobs and try to suspend that job for next execution.

Inject your SchedulerFactoryBean . Use it's getScheduler method to obtain a quartz Scheduler and use rescheduleJob or other methods from quartz API to perform your task.

I got it work by use of following code

stdScheduler is a 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);
            }
     }
 }          

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

If you got hold of the SchedulerFactoryBean by injection or somehow else there are the convenience methods:

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

When using Quartz directly also this works:

@Autowired
private Scheduler scheduler;

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM