2015-10-09 3 views
0

У меня есть ряд заданий Quartz.Net сцепленных вместе с помощью Слушателей:Каковы общепринятые способы отмены цепочки работы Quartz.Net?

  • задание выполняется ...
    • JobAListener.JobWasExecuted() вызывается метод, а затем выполняет работы B
  • Работа Б выполняет ...
    • JobBListener.JobWasExecuted() вызывается метод, затем выполняет работы С
  • и так далее ...

Допустим задание не удается таким образом, что я не хочу, чтобы refire работу, и я хочу, чтобы замкнуть оставшуюся часть цепочки заданий. В других словах я хочу остановить выполнение остальной цепи после того, как Job A завершится с ошибкой.

Каково надлежащее средство для этого?

ответ

2

Метод JobWasExecuted() на вашем рабочем месте должен принимать IJobExecutionContext и JobExecutionException в качестве параметров, предоставляемых кварцем. Я просто проверил бы, будет ли JobExecutionException пустым, когда JobWasExecuted() запускается для JobA. Если это не null, то вы знаете, что при запуске JobA произошло необработанное исключение, и вы можете просто не запускать JobB. Это фактически приведет к «короткому замыканию» вызывающей цепи.

Это предполагает, что необработанное исключение является вашим критерием для определения неудачи JobA (вы не указали). Если это что-то сверх этого, что вам нужно проверить, вы всегда можете посмотреть свойства IJobExecutionContext, чтобы получить дополнительную информацию.

 Смежные вопросы

  • Нет связанных вопросов^_^