我有一系列使用监听器链接在一起的 Quartz.Net 作业:
- 作业 A 执行...
- 调用 JobAListener.JobWasExecuted() 方法,然后执行 Job B
- 作业 B 执行...
- 调用 JobBListener.JobWasExecuted() 方法,然后执行 Job C
- 等等...
假设作业 A 以这样的方式失败,我不想重新解雇该作业并且我想短路作业链的其余部分。换句话说,我想在作业 A 失败后停止执行链的其余部分。
这样做的正确方法是什么?
我有一系列使用监听器链接在一起的 Quartz.Net 作业:
假设作业 A 以这样的方式失败,我不想重新解雇该作业并且我想短路作业链的其余部分。换句话说,我想在作业 A 失败后停止执行链的其余部分。
这样做的正确方法是什么?
您的作业监听器上的JobWasExecuted()
方法应该将 anIJobExecutionContext
和 aJobExecutionException
作为 Quartz 提供的参数。我只是检查一下JobExecutionException
当JobWasExecuted()
为 JobA 触发时是否为空。如果它不为空,那么您知道在触发 JobA 时发生了未处理的异常,您根本无法触发 JobB。这实际上将“短路”调用链。
这假定未处理的异常是您确定 JobA 是否失败的标准(您没有指定)。如果您需要检查超出此范围的内容,您可以随时查看属性IJobExecutionContext
以获取更多信息。