初始延迟的Cron表达式 - Quartz

时间:2013-02-20 15:22:30

标签: cron quartz-scheduler

我只是想弄清楚如何在初始延迟的Quartz中配置Cron作业。 所以我需要每小时运行一次,最初延迟10分钟。

"* * 0/1 * * ?"

1 个答案:

答案 0 :(得分:0)

这是一个迟到的答案,希望这有助于其他人。我通过在我的服务类中使用了2个预定函数来解决了这个问题:

@EnableScheduling
public class DeviceService {

    @Scheduled(initialDelayString = "${devices.update.initial}", fixedDelay = 2592000000L)
    public void initialUpdateDevices() {
        updateDevices();
    }

    @Scheduled(cron = "${devices.update.cron}")
    public void cronUpdateDevices() {
        updateDevices();
    }

    private void updateDevices() {
        ...
    }
}

初始延迟和cron表达式在application.properties中设置。 fixedDelay是因为Spring不允许单独使用initialDelay。我把它设置为2592000000毫秒,这是30天。在我们的应用程序中,潜在的额外更新不会造成任何伤害。

在application.properties中:

devices.update.initial = 600000
devices.update.cron = 0 30 1 * * *

最初在10分钟(60000毫秒)后运行,然后每晚在01:30运行。

在单元测试的application-test.properties中:

devices.update.initial = 86400000
devices.update.cron = 0 30 1 24 12 *

我们的单元测试都没有需要1天才能执行,所以86400000毫秒是一个安全的赌注。 cron" 0 30 1 24 12 *"在圣诞节前夕,人们应该梦想着美好的事物。