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