我想从 Quartz 的调度程序中检索已安排但已执行的作业。有什么办法吗?
问问题
1990 次
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 回答