Quartz.Net调度程序 - 具体表示成功完成工作的内容是什么?

时间:2015-07-05 17:41:23

标签: .net quartz-scheduler scheduler quartz.net quartz.net-2.0

Quartz确定作业是否成功的唯一因素是作业的Execute()方法是否完成而没有抛出JobExecutionException?

这是我一直在努力的假设;所以,如果我将一个监听器连接到我的工作并且JobWasExecuted(...)中的jobException参数== null,那么我假设Quartz认为该工作是成功的。

我在问,因为我看到其他人在JobWasExecuted(...)中检查TriggerState,如果是TriggerState.COMPLETE,他们似乎正在考虑成功的工作。但这只是检查触发器本身的状态,该作业,对吗?如果是这种情况,那么COMPLETE的TriggerState是否只是意味着触发器被触发了?

所以我要确认两件事:

  1. 在作业的Execute方法中缺少抛出JobExecutionException(因此在侦听器中为null)意味着(对于Quartz)作业成功完成
    1. TriggerState不是作业完成成功的指标

1 个答案:

答案 0 :(得分:3)

成功的工作取决于你如何写作业。例如,我们有一份工作为每个客户做一些事情。然而,即使在为一个客户工作时出现异常或问题,它仍然可以继续设计。在其他情况下,您可能希望作业作为一个单元失败。所以,这主要取决于你如何写你的工作。但是,作业执行完毕后,将在作业侦听器上调用JobWasExecuted。然后由您决定成功或失败的含义。如果你写了你的工作,如果不成功就抛出异常,那么1的答案是肯定的。

由于上述原因,触发状态不是成功完成作业的良好指标。