I'd like to maintain a history of jobs that were scheduled by a Quartz scheduler containing the following properties: 'start time', 'end time', 'success', 'error'.
There are two interfaces available for this: ITriggerListener
and IJobListener
(I'm using the C# naming convention for interfaces because I'm using Quartz.NET but the same question could be asked for the Java version).
IJobListener
has a JobToBeExecuted
and a JobWasExecuted
method. The latter provides a JobExecutionException
so that you know when something went wrong. However, there is no way to correlate JobToBeExecuted
and JobWasExecuted
. Suppose my job runs for ten minutes. I start it at t0
and t0+2
(so they overlap). I get two calls to JobToBeExecuted
and insert two start times into my history table. When both jobs finish at t1
and t1+2
I get two calls to JobWasExecuted
. How do I know what database record to update in each call (to store an end time with its corresponding start time)?
ITriggerListener
has another problem. There is no way to get any errors inside the TriggerComplete
method when a job failed.
How do I get the desired behavior?