我有一个 Spring Boot 应用程序,它将创建一个 JAR 文件。在这个应用程序中,我有两个作业要执行。一个作业是 master 作业,它将数据保存在 MySQL 数据库中,第二个作业执行一些计算并准备一些报告。
我需要每 15 分钟执行一次主作业,每 20 分钟执行一次第二个作业。所以我使用 Spring Corn 表达式“* */15 * * * ”作为主要工作,“ */20 * * * *”作为第二份工作。但是作业执行的行为非常突然。我在这里做错了什么?
最佳答案
新答案 你是对的,我亲自测试过它的工作正常
在 java 中使用以下代码测试 cron 执行
CronTrigger t = new CronTrigger("* */15 * * * * ");
TriggerContext tc = new SimpleTriggerContext();
System.out.println("Current Time:" + new Date()+ " |Next Execution " + t.nextExecutionTime(tc));
Calendar c = Calendar.getInstance();
c.setTime(new Date()); // Now use today date.
c.add(Calendar.MINUTE,16);
tc = new SimpleTriggerContext(c.getTime(),c.getTime(),c.getTime());
System.out.println("Current Time:" +c.getTime() + "Next Execution " + t.nextExecutionTime(tc));
c.add(Calendar.MINUTE,18);
tc = new SimpleTriggerContext(c.getTime(),c.getTime(),c.getTime());
System.out.println("Current Time:" + c.getTime() + "Next Execution " + t.nextExecutionTime(tc));
这里是导入
import org.springframework.scheduling.TriggerContext;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.scheduling.support.SimpleTriggerContext;
import java.util.Calendar;
import java.util.Date;
旧答案
您错误地将第一份工作安排在每天下午 3 点
正确的 cron 是 */15 * * * *
使用
@Scheduled(cron = "*/15 * * * *")
您错误地将第二份工作安排在每天晚上 8 点
正确的 cron 是 */20 * * * *
请参阅 cron 选项卡 http://corntab.com/?c=*/20_*_*_*_*_
关于Spring Boot CRON 表达式无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48779986/