我想让我的cron每隔第二天执行一次工作。因此,如果我在5月25日执行工作,它将在6月25日,27日,29日,3月6日,6月4日举行。
但问题是,在5月31日结束后,cron将重置并开始运行于6月1日,6月3日,6月5日...而不是6月2日,即6月4日..
下面是我的代码..
CronTrigger cronTrigger = newTrigger()
.withIdentity("trigger1", "testJob")
.startAt(startDate)
.withSchedule(CronScheduleBuilder.cronSchedule( * * * 1/2 * ?")
.withMisfireHandlingInstructionDoNothing())
.build();
答案 0 :(得分:4)
CronTrigger cronTrigger = newTrigger()
.withIdentity("trigger1", "testJob")
.startAt(startDate)
.withSchedule(CronScheduleBuilder.cronSchedule( * * * */2 * ?")
.withMisfireHandlingInstructionDoNothing())
.build();
每天从'* / 2听'*'代替1/2,* / 2表示每两天一次。
更新:Crontrigger不能用于每隔2天运行一次,因为它总是从每个月的第1天开始,即使最后一次执行jab是在31,它将在第1天运行月份,而不是每月的第二天。您可以将其设置为每隔2天48小时后运行,请查看这是否有助于您
trigger = newTrigger()
.withIdentity("trigger3", "group1")
.startAt(tomorrowAt(15, 0, 0) // first fire time 15:00:00 tomorrow
.withSchedule(simpleSchedule()
.withIntervalInHours(2 * 24) // interval is actually set at 48 hours' worth of milliseconds
.repeatForever())
.build();
有关详细信息,请参阅This链接
答案 1 :(得分:2)
从quartz cron网站,我发现我无法使用cronTrigger设置每个第二天的工作执行。
"乍一看,您可能会想要使用CronTrigger。但是,如果这是真的 每两天,CronTrigger都不会工作。为了说明这一点,只需思考 在一个典型的月份(28-31)中有多少天。一个cron表达式,如" 0 0 5 2/2 *?" 会给我们一个触发器,它会在每个月初重新开始计算。 这意味着我们将在7月30日和8月2日获得随后的解雇 间隔三天,而不是两天。"