我只是可以弄清楚如何在 Quartz 中配置一个具有初始延迟的 Cron 作业。所以我需要一个每小时运行一次的东西,初始延迟为 10 分钟。
"* * 0/1 * * ?"
我只是可以弄清楚如何在 Quartz 中配置一个具有初始延迟的 Cron 作业。所以我需要一个每小时运行一次的东西,初始延迟为 10 分钟。
"* * 0/1 * * ?"
这是一个迟到的答案,希望这对其他人有帮助。我通过在我的服务类中有 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。我将其设置为 2592000000ms,即 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 *" 设置为人们应该梦想美好事物的平安夜之夜。