开发者

how to suspend job in quartz scheduler?

开发者 https://www.devze.com 2023-04-12 13:22 出处:网络
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 s

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);
            }
     }
 }          


We can use the stdScheduler.pauseJob(JobKey jobKey) method to reduce the number of loops mentioned in the code above


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();
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号