Я хотел бы сохранить историю заданий, запланированных планировщиком Quartz, содержащую следующие свойства: «время начала», «время окончания», «успех», «ошибка».
Для этого доступны два интерфейса: ITriggerListener
и IJobListener
(я использую соглашение об именовании C# для интерфейсов, потому что я использую Quartz.NET, но тот же вопрос можно задать для версии Java).
IJobListener
имеет методы JobToBeExecuted
и JobWasExecuted
. Последний предоставляет JobExecutionException
, чтобы вы знали, когда что-то пошло не так. Однако нет возможности сопоставить JobToBeExecuted
и JobWasExecuted
. Предположим, моя работа длится десять минут. Я начинаю с t0
и t0+2
(чтобы они пересекались). Я получаю два вызова JobToBeExecuted
и вставляю два времени начала в свою таблицу истории. Когда оба задания заканчиваются в t1
и t1+2
, я получаю два вызова JobWasExecuted
. Как узнать, какую запись базы данных обновлять при каждом вызове (чтобы сохранить время окончания с соответствующим временем начала)?
У ITriggerListener
другая проблема. Невозможно получить какие-либо ошибки внутри метода TriggerComplete
при сбое задания.
Как получить желаемое поведение?