3

Quartz 确定作业是否成功的唯一因素是作业的 Execute() 方法是否在未引发 JobExecutionException 的情况下完成?

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

我之所以问,是因为我看到其他人从 JobWasExecuted(...) 中检查 TriggerState,如果它是 TriggerState.COMPLETE,他们似乎认为这项工作是成功的。但这只是检查触发器本身的状态,而不是检查工作,对吗?如果是这种情况,COMPLETE 的 TriggerState 是否仅仅意味着触发器已触发?

所以我要确认两件事:

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

  1. TriggerState 不是作业完成成功的指标
4

1 回答 1

3

一份工作是否成功将取决于你如何写这份工作。例如,我们有一项为每个客户做某事的工作。但是,即使在为一个客户工作时出现异常或问题,它也可以继续运行。在其他情况下,您可能希望作业作为一个整体失败。所以,这主要取决于你如何写你的工作。但是,当作业完成执行时,将在您的作业侦听器上调用 JobWasExecuted。然后由您决定成功或失败意味着什么。如果您编写工作以在不成功时抛出异常,那么 1 的答案是肯定的。

由于上述原因,触发器状态不能很好地指示作业是否成功完成。

于 2015-07-06T15:54:52.917 回答