java - 服务器重启或崩溃后的计划任务

标签 java spring-boot scheduled-tasks scheduler cron-task

我有一些与 Spring Boot 应用程序中的 @Scheduled 任务相关的问题

我有一些微服务每月发送一封电子邮件。我有@Scheduled(cron="每月表达式")。但想象一下,我已经运行此服务 15 天(但我们需要 30 天来发送电子邮件),并且在 16 天的服务中重新启动或崩溃,并在一段时间后再次醒来。这项工作将从第一天开始再次计算 1 个月,还是继续计算 16 天等等?

@Scheduled(cron="0 0 0 1 * *")
public void sendEmail() {
    emailService.sendEmail();
}

我需要在服务器崩溃后,假设这个任务从15天开始持续15天,15天后发送一封信,但没有从第一天开始再次计数

最佳答案

使用这个cron:

0 0 0 1 * ?

无论服务器何时启动,这都会在每个月的第一天运行调度程序。

关于java - 服务器重启或崩溃后的计划任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57241066/

相关文章:

java - 如何管理来自在单独线程中运行的多个外部命令的多个标准输出?

java - 通过传入列标题对不同列进行 ORDER BY

javascript - 无法触发单选按钮上的 onclick 事件

java - Spring Restdocs 响应负载包含可选的空对象列表

java - ignite 不会随 spring-boot 2.0.5 启动 - h2 属性 NESTED_JOINS 不存在

java - 如何使用 gradle 对多个嵌入式服务器运行 spring-boot 集成测试

java - ScheduledExecutorService 仅使用 switch 语句执行一次

Java 使用 Joda Time 安排 Activity ,例如 Timer

java - 如果在多个属性文件中定义了一个属性,Spring 如何选择要使用的属性值?

java - 为什么 Java 的 scheduleWithFixedDelay 使用 Runnable 而不是 FutureTask<?> 包装 runnable?