2014-09-02 50 views
1

一個問題,在執行作業之後,石英從數據庫qrtz_triggers表中刪除作業,但在特定情況下需要重複失敗的作業。如何保存Quartz執行的作業?

是否有任何配置選項或方法在執行後將作業存儲到另一個表中?

謝謝

+0

如果您的工作失敗,您可以決定將工作恢復或工作,失敗後,您可以訪問計劃程序以重新計劃工作。 – 2014-09-02 18:31:55

回答

2

如果使用JDBCJobStore,你的作業存儲在一個表像QRTZ_JOB_DETAILS,和你簡單的觸發器都存儲在QRTZ_SIMPLE_TRIGGERS,您的cron trigers存儲在QRTZ_CRON_TRIGGERS,以及所有觸發器都存儲在QRTZ_TRIGGERS

如果您希望自己的工作持久耐用,並且在沒有觸發器與工作關聯時仍然存在,則在構建JobDetail時應該致電storeDurably(true)。例如:

JobDetail jobDetail = JobBuilder.newJob() 
    .ofType(DataMapJob.class) 
    .withIdentity("dataJob", "dataJobGroup") 
    .storeDurably(true) 
    .requestRecovery(true) 
    .build(); 

希望它有幫助。

+0

謝謝,它是有用的 – 2014-09-03 16:14:54

2

這正是持久標誌的用途。即使沒有與工作相關的觸發器,Quartz中也會保留持久的工作。另一方面,Quartz會自動刪除非持久作業,因爲沒有關聯的觸發器(例如在所有關聯的觸發器被觸發並被Quartz刪除後)。

有關詳細信息,請參閱JobDetailImpl javadoc

+0

謝謝,這是有益的 – 2014-09-03 16:15:20

相關問題