0

我有一系列使用监听器链接在一起的 Quartz.Net 作业:

  • 作业 A 执行...
    • 调用 JobAListener.JobWasExecuted() 方法,然后执行 Job B
  • 作业 B 执行...
    • 调用 JobBListener.JobWasExecuted() 方法,然后执行 Job C
  • 等等...

假设作业 A 以这样的方式失败,我不想重新解雇该作业并且我想短路作业链的其余部分。换句话说,我想在作业 A 失败后停止执行链的其余部分。

这样做的正确方法是什么?

4

1 回答 1

2

您的作业监听器上的JobWasExecuted()方法应该将 anIJobExecutionContext和 aJobExecutionException作为 Quartz 提供的参数。我只是检查一下JobExecutionExceptionJobWasExecuted()为 JobA 触发时是否为空。如果它不为空,那么您知道在触发 JobA 时发生了未处理的异常,您根本无法触发 JobB。这实际上将“短路”调用链。

这假定未处理的异常是您确定 JobA 是否失败的标准(您没有指定)。如果您需要检查超出此范围的内容,您可以随时查看属性IJobExecutionContext以获取更多信息。

于 2015-10-14T14:28:04.913 回答