2013-02-20 404 views
1

我只是可以弄清楚如何在Quartz中配置Cron作业并初始延迟。 所以我需要每小时运行10分钟的初始延迟。具有初始延迟的Cron表达式 - 石英

"* * 0/1 * * ?" 
+0

让脚本睡一会儿怎么样? – fedorqui 2013-02-20 16:04:08

+0

那么执行多少分钟呢?一小时还是70分钟? – fedorqui 2013-02-25 18:07:32

+0

你的意思是在启动10分钟后再启动一次,然后每隔一小时启动一次? – darrenmc 2013-03-05 17:07:41

回答

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设置。由于Spring不允许initialDelay单独使用,所以fixedDelay在那里。我把它设置为2592000000ms,这是30天。在我们的应用程序中,潜在的额外更新不会造成任何伤害。

在application.properties:

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

在01:30 10分钟(60000毫秒),然后每天晚上后开始运行。

在application-test.properties单元测试:

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

的单元测试无需要1天到执行如此86400000毫秒是一个安全的赌注。 cron“0 30 1 24 12 *”被设定为平安夜的夜晚,人们应该梦想着好事。