2015-10-09 44 views
0

我有一系列使用監聽器鏈接在一起Quartz.Net工作:什麼是取消Quartz.Net作業鏈的普遍接受方式?

  • 作業A執行...
    • JobAListener.JobWasExecuted()方法被調用,然後執行作業B
  • 作業B執行...
    • JobBListener.JobWasExecuted()方法被調用,然後執行作業C
  • 等等...

比方說作業A中,我不想重燒作業這樣的方式失敗,我想短路的作業鏈的其餘部分。換句話說,我想在作業A失敗後停止執行鏈條的其餘部分。

這樣做的正確方法是什麼?

回答

2

作業監聽器上的JobWasExecuted()方法應該採用由石英提供的IJobExecutionContextJobExecutionException作爲參數。我會檢查JobExecutionException是否爲JobWasExecuted()爲JobA觸發時是否爲空。如果它不爲null,比你知道發射JobA時發生未處理的異常,並且你可以簡單地不激發JobB。這實際上會使調用鏈「短路」。

這假定未處理的異常是用於確定JobA失敗(您沒有指定)的條件。如果您需要檢查的內容超出此範圍,您可以隨時查看IJobExecutionContext的屬性以獲取更多信息。

相關問題