您好,我正在使用下面的SpringBoot cron表达式来运行我的计划作业,每天两次。它应该在上午10点和下午4点运行。
@Scheduled(cron = "0 0 10,16 * * *")我在下午3:30启动了Springboot应用程序,它在下午4点触发了计划的作业,但第二天它没有在上午10点触发作业
上面的cron表达式有什么问题吗?请注意,这不是unix cron表达式。根据SpringBoot文档,它只需要6个参数。
发布于 2019-08-20 11:15:18
cron表达式是正确的。应该还有其他问题导致您的cron作业不能按预期运行。
在内部,Spring使用CronSequenceGenerator为cron表达式生成下一个触发时间。要证明您的cron表达式配置正确,可以尝试使用CronSequenceGenerator。
例如,下面的函数将简单地打印出cron表达式的下10个触发时间:
public static void printNextTriggerTime(String cronExpression, LocalDateTime currentTime) {
CronSequenceGenerator generator = new CronSequenceGenerator(cronExpression);
Date d = Date.from(currentTime.atZone(ZoneId.systemDefault()).toInstant());
for (int i = 0; i < 10; i++) {
d = generator.next(d);
System.out.println(d);
}
}如果我输入cron表达式和开始时间:
printNextTriggerTime("0 0 10,16 * * *", LocalDateTime.of(2019, 8, 20, 15, 30, 0));它将输出:
Tue Aug 20 16:00:00 HKT 2019
Wed Aug 21 10:00:00 HKT 2019
Wed Aug 21 16:00:00 HKT 2019
Thu Aug 22 10:00:00 HKT 2019
Thu Aug 22 16:00:00 HKT 2019
Fri Aug 23 10:00:00 HKT 2019
Fri Aug 23 16:00:00 HKT 2019
Sat Aug 24 10:00:00 HKT 2019
Sat Aug 24 16:00:00 HKT 2019
Sun Aug 25 10:00:00 HKT 2019https://stackoverflow.com/questions/57565281
复制相似问题