我有一个 Java 解决方案,使用Quartz 2.2.3
,我所拥有的是:
- 我的工作类别已注释
@DisallowConcurrentExecution
为了避免并发,所以同一个作业不能每次运行一次(OK)
- 它是一个 CRON,每 1 小时运行一次(OK)
- 时间是下午 1 点,作业开始运行(OK)
- 现在时间是下午2点,之前的工作还没有完成(OK)
- 由于该类已注释,下一个作业将不会开始(这很棒 - 好的)
- 现在时间是 2 小时 15 分钟,第一个工作刚刚完成(OK)
- 现在问题来了,因为第二个工作没有在下午 2 点开始,但现在第一个工作刚刚完成,第二个工作将开始。
这是我的问题,如果前一个工作没有完成,我不想让第二个工作等待,我想跳过第二个工作,当时间轮到时3pm
该作业可以运行。阅读 javadoc 我添加了withMisfireHandlingInstructionDoNothing()
但它不起作用。
我想我做错了什么或者错过了什么。
My code:
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
JobDetail job = JobBuilder.newJob(TestCronService.class).withIdentity("testA","testB").build();
CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity("testA","testB")
.withSchedule(CronScheduleBuilder.cronSchedule("0 0 * * * ?")
.withMisfireHandlingInstructionDoNothing())
.build();
scheduler.scheduleJob(job, trigger);
scheduler.start();
更改功能:
withMisfireHandlingInstructionDoNothing()
with
withMisfireHandlingInstructionNextWithRemainingCount()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)