【问题标题】:Quartz.Net scheduler - What specifically indicates successful job completion?Quartz.Net 调度程序 - 什么特别表明作业成功完成?
【发布时间】:2015-07-05 17:41:23
【问题描述】:

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

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

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

所以我想确认两件事:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • >同意,我会从业务逻辑的角度做出决定,但我是否正确理解如果作业的 Execute() 方法无异常返回,Quartz 本身认为作业是成功/完成的?我最感兴趣的是 Quartz 的观点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    相关资源
    最近更新 更多