您好我正在创建一个基于cron表达式执行类方法的应用程序。为此,我使用spring quartz,我必须在我的spring文件中配置所有这些东西,它工作正常,并且作业正在基于cron表达式执行,但现在我想暂停基于java类的特定作业的下一次执行从UI中选择用户。那有什么办法吗?
我可以在上下文中获取所有正在运行的作业的详细信息吗?如果是,那么我可以过滤作业并尝试暂停该作业以便下次执行。
答案 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();