Spring Boot 调度程序 Cron 结束 运行

SpringBoot Scheduler Cron over running

有没有专家在使用springboot scheduler时遇到问题

试图将它设置为 运行 在工作日的下午 2 点到晚上 10 点之间每隔 15 分钟/每小时,但它似乎是按分钟触发的,是因为我的 cron 是错误的还是我应该做 smthg 来控制它?

running in linux server via springboot-web-started

@Scheduled(cron = "0 15 14-22 * * MON-FRI")
private void fireDownload() {
    log.info("fireDownload");

    this.jmsXXXX.run(Constants.XXXX);
}

版本

spring-boot 2.4.2
java 11

请试试这个

@Scheduled(cron = "0 */15 14-22 * * MON-FRI")

你在评论中说这不起作用,所以让我们用每 5 分钟触发一次的简单概念验证来测试它

@Scheduled(cron = "0 */5 8-22 * * MON-FRI")
private void cronPOC() {
    log.info("cronPOC triggered by cron");
}

下面的屏幕截图显示 POC 确实有效。

在我们进行测试的同时,让我们将上面评论中的@GerbenJongerius 建议也加入到测试中(为了加快速度进行一些微小的更改)。

@Scheduled(cron = "0 0/5 8-22 ? * MON-FRI")
private void cronPOC() {
    log.info("cronPOC triggered by cron v2");
}

...这也有效

一些 Spring cron 示例,此处有解释: