2012-12-27 61 views
10

我正在嘗試在我的Spring應用程序中集成石英作業。我從here得到了這個例子。該示例顯示了使用simpletrigger以及在特定時間使用crontrigger以重複間隔執行的作業。石英在應用程序啓動時的一次性工作

我的要求是在應用程序啓動時只運行一次作業。我刪除了財產repeatInterval,但應用程序將引發異常:

org.quartz.SchedulerException: Repeat Interval cannot be zero 

有沒有什麼辦法來安排工作只有一次?

謝謝..

回答

7

找到了答案here

忽略repeatInterval和設置repeatCount = 0做什麼,我想要的。

1

Spring SimpleTriggerFactoryBean完成這項工作:如果您沒有指定開始時間,它會將其設置爲'now'。

然而,我認爲長時間運行的一次性工作應該被認爲是反模式,因爲即使在雙節點集羣中它也不會工作:如果運行該工作的節點停止運行,將不會有一個會重新開始工作。

我更喜歡有一個重複例如每小時,但用@DisallowConcurrentExecution註釋。通過這種方式,您可以確保只有一個作業正在運行,無論是最初託管作業的節點都處於啓動狀態,還是處於關閉狀態之後。

相關問題