0

我想从 Quartz 的调度程序中检索已安排但已执行的作业。有什么办法吗?

4

2 回答 2

2

好吧,首先您需要检索所有当前计划作业的列表:

Scheduler sched = new StdSchedulerFactory().getScheduler();
List jobsList = sched.getCurrentlyExecutingJobs();

然后,迭代列表以检索到达作业的上下文。每个上下文都有一个 getPreviousFireTime()。

Iterator jobsIterator = jobsList.listIterator();   
List<JobExecutionContext> executedJobs = new List<JobExecutionContext>();  

while(jobsIterator.hasNext())
{
    JobExecutionContext context = (JobExecutionContext) jobsIterator.next();
    Date previous = context.getPreviousFireTime();
    if (previous == null) continue; //your job has not been executed yet

    executedJobs.Add(context); //there's your list!
}

根据您使用的石英(java 或 .net),实现可能略有不同,但原理是相同的。

于 2013-05-08T17:33:28.177 回答
0

设置属性 JobDetail.setDurability(true) - 指示 Quartz 在 Job 成为“孤儿”时不要删除 Job(当 Job 不再有 Trigger 引用它时)。

于 2013-06-06T10:23:06.190 回答