2016-11-21 30 views
0

我有一個需求,我需要安排一個只能執行一次的任務(從UI)。完成後,我應該能夠重新安排(從UI)同樣的任務。重新安排使用Spring觸發器執行一次的任務

我知道@Schedule不會在這裏工作,因爲我只需要執行一次。因此,在進一步搜索後,我可以安排任務在特定時間只使用帶有Runnable和Date的TaskScheduler執行一次,也可以與@Async一起執行。但是我無法將其重新安排。

看起來像使用石英是可能的,但我沒有穿過了這呢。

是否有可能通過Spring觸發器實現我的需求。我只能看到觸發器接口CronTrigger和PeriodicTrigger的兩個實現。

請提出任何可能的方法。包含最初的一段代碼會很有幫助。

回答

0

我看到的最簡單的方法是創建一個Spring bean,檢查了一定條件,只執行當條件滿足「真實」行動定期「觸發」的方法(例如,你在輸入的時間UI是在過去,這項工作尚未開始):

@Scheduled(fixedDelay = 5000) 
public void trigger() { 
    if(condition){ 
    //... do the action 
    } 
} 

這需要一定的持久性存儲「作業元」之類的執行日期和作業的當前狀態,但似乎「輕」比使用線程或僅包含石英僅用於這一個用例。

+0

我不知道怎麼@Schedule將在內部工作,但不會使其不必要的調用來觸發全天()方法,每5秒,儘管條件可能無法滿足? – Angom

+0

是的,觸發器()方法會每5秒調用一次。 – Tom

相關問題