2013-11-22 165 views
2

我有一個spring批處理應用程序,我使用CRON來設置此應用程序的運行頻率。但我遇到的問題是,我想運行在特定的時間CRON:在特定時間運行作業

3 am 
7 am 
11 am 
3 pm 
7 pm 
11 pm 

正如你可以看到它是每4個小時,但在凌晨3點開始,所以我不能在的小時部分使用*/4工作時間格式,因爲這將在凌晨4點開始工作

我也嘗試'3,7,11,15,19,23'在小時段,但這也不工作(猜測它只能在分鐘部分)。有人知道我該怎麼做嗎?

回答

4

使用

@Scedule(cron="0 0 3/4 * * ?") 

的模式x/y意味着:其中<timepart> mod y = x

@Scedule(cron="0 0 3,7,11,15,19,21 * * ?") 

按照Quartz Cron Trigger Tutorial

'/'字符可用於指定增量值。例如,如果您在「分鐘」字段中輸入「0/15」,則表示「每分鐘15分鐘,從零開始」。如果您在分鐘欄中使用'3/20' ,則意味着'每隔20分鐘一小時, 開始於第三分鐘' - 或換句話說,它與指定'3,23,43'的 相同在分鐘字段中。請注意, 「/ 35」的含義*並不意味着「每35分鐘」 - 這意味着「每小時第35分鐘 ,從零分開始」 - 或換句話說,與指定「0,35」的 相同, 。

1

0 0 3,7,11,15,19,23 * *?

從上午3點開始,每天下午23點結束0分鐘的火災。

1

由兩個答案錯誤我正在爲我留着撇號開始和我小時結束......很無聊的上述判斷

我設法解決這個問題通過使用3-23/4爲每小時這從上午3點開始,然後每隔4小時(對其他答案進行不同的處理)