【问题标题】:Spring Scheduler to run at different timings on a single daySpring Scheduler 在一天的不同时间运行
【发布时间】:2021-06-26 07:09:21
【问题描述】:

我有一个要求,我的调度程序必须在每天上午 9 点到下午 12 点之间每小时运行一次,然后分别在下午 3 点和下午 5 点运行一次。

如何使我的 CRON 表达式根据要求工作 到目前为止,我已经尝试过使用下面的 cron 表达式

@Scheduled(cron="0 0 9-12 * * *")

但从上午 9 点到下午 12 点每小时运行一次 我如何修改它以使其在下午 3 点和下午 5 点也运行一次。

我尝试过组合两个如下所示的 cron 表达式,但效果很好。

@Scheduled(cron="0 0 9-12 * * *, 0 0 3 * * *")

我可以通过 2 个@Scheduled 给出 2 个 cron 表达式,如下所示

@Scheduled(cron="0 0 9-12 * * *")
@Scheduled(cron="0 0 9-12 * * *")
public void myMethod() {}

这是一个可行的解决方案吗?

谁能帮我解决这个问题?

【问题讨论】:

  • 使用多个注释或@Scheduled(cron = " 0 0 9-12,15,17 * * *) 之类的东西,后者应该也能正常工作 IIRC(否则只需使用多个可以工作的注释)。

标签: spring-boot cron scheduled-tasks job-scheduling spring-scheduled


【解决方案1】:

@Schedules 注解可用于设置多个基于日历的定时器表达式。

这个注解会去掉写相同的冗余 方法多次。

在以下示例中,第一个表达式将计时器设置为在每个月的最后一天到期。第二个表达式将计时器设置为每周五晚上 11:00 到期。

@Schedules ({
    @Schedule(dayOfMonth="Last"),
    @Schedule(dayOfWeek="Fri", hour="23")
})
public void doPeriodicCleanup() { ... }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 2016-06-13
    • 1970-01-01
    • 2017-05-17
    相关资源
    最近更新 更多