【问题标题】:What's the generally accepted means of cancelling a Quartz.Net job chain?取消 Quartz.Net 工作链的普遍接受的方法是什么?
【发布时间】:2015-10-09 02:43:22
【问题描述】:

我使用 Listeners 将一系列 Quartz.Net 作业链接在一起:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-31
      • 2011-12-07
      • 2014-12-16
      • 1970-01-01
      • 2011-09-24
      相关资源
      最近更新 更多