2013-02-20 400 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 *」被設定爲平安夜的夜晚,人們應該夢想着好事。