.net - Quartz.Net 调度程序 - 什么具体表示成功完成作业?

标签 .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 不是作业完成成功的指标

最佳答案

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

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

关于.net - Quartz.Net 调度程序 - 什么具体表示成功完成作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31233178/

相关文章:

windows - Windows schtasks 中 xml 文件中 ExecutionTimeLimit 的开关是什么?

c# - Bitmap.GetHbitmap() 在 XP 上失败

c# - 为什么在 using 语句中声明的变量被视为只读?

.net - 对 .NET Framework 的不需要的依赖

kubernetes - 避免 kubernetes 调度程序在 kubernetes 集群的单个节点中运行所有 pod

algorithm - 通过多核处理器在 RTOS 中进行群组调度

c# - 在不激活的情况下与表单交互

hibernate - 在没有 Hibernate 的情况下使用 grails Quartz 插件

java - quartz HelloJob

java - 如何在 Spring 的秒 0 之前启动 quartz 调度程序?