Spring Boot CRON 表达式无法正常工作

标签 spring spring-boot spring-batch

我有一个 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/

相关文章:

java - 使用 sshj 时为 "JCE cannot authenticate the provider BC"

java - 用户登录后如何在 Controller 中获取 session 数据

spring-batch - Spring Batch File Writer异常处理

Java Spring Batch 使用嵌入式数据库存储元数据,使用第二个数据库存储其他数据

spring - spring中bean标签的黑白primary属性和autowire-candidate属性的区别

java - Spring 单元测试 - 为不同的单元测试加载不同的配置文件

java - 应用程序属性 "server.servlet.session.timeout"在 Spring Boot 项目中不起作用

java - docker 在错误的端口上运行图像

java - Jackson2ObjectMapperBuilder 启用任何字段可见性

java - 如何使用 Spring Batch 读取/写入 zOS(大型机)平面文件