下面是我的代码,我想通过crone表达每十分钟运行一次我的工作。 我希望我的工作第一次立即运行,之后它应该以10分钟的间隔运行。我正在使用quartz-2.1.2
JobKey jobKeyA = new JobKey("abc", "abc");
JobDetail jobA = JobBuilder.newJob(ContiniousJob.class)
.withIdentity(jobKeyA).build();
Trigger trigger3 = TriggerBuilder
.newTrigger()
.withIdentity("abc", "abc")
.startNow()
.withSchedule(CronScheduleBuilder.cronSchedule("0 0/10 * * * ?"))
.build();
感谢。
答案 0 :(得分:1)
如果您只想要10分钟间隔,则不需要CronTrigger,您只需使用SimpleTrigger:
Trigger trigger3 = TriggerBuilder
.newTrigger()
.withIdentity("abc", "abc")
.startNow()
.withSchedule(simpleSchedule()
.withIntervalInMinutes(10)
.repeatForever())
.build();
如果仍然因任何原因需要使用CronTrigger,这应该可行:
// Trigger to run immediately
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("abc", "abc")
.startNow()
.build();
Set<Trigger> triggers = new HashSet<>();
triggers.add(trigger);
// Your CronTrigger
Date delayedStart = DateUtils.addMinutes(new Date(), 10);
Trigger cronTrigger = TriggerBuilder
.newTrigger()
.withIdentity("abc", "abc")
.startAt(delayedStart)
.withSchedule(CronScheduleBuilder.cronSchedule("0 0/10 * * * ?"))
.build();
triggers.add(cronTrigger);
// Schedule job with multiple triggers
scheduler.scheduleJob(job, triggers, false);
立即运行一个触发器,另一个触发器成为您的CronTrigger。
答案 1 :(得分:0)
不幸的是,没有机会立即解雇cron。
我建议在需要启动一段短暂的延迟时间(当前时间+ 1分钟)后立即安排任务。
尝试测试您的表达式here。