0
A
回答
1
您可以通过下面的代码获得下一个触发的时间,并与cuurent时间相比,如果执行时间是在过去那么作业已经执行:
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
for (String groupName : scheduler.getJobGroupNames()) {
for (JobKey jobKey : scheduler.getJobKeys(GroupMatcher.jobGroupEquals(groupName))) {
String jobName = jobKey.getName();
String jobGroup = jobKey.getGroup();
//get job's trigger
List<Trigger> triggers = (List<Trigger>) scheduler.getTriggersOfJob(jobKey);
Date nextFireTime = triggers.get(0).getNextFireTime();
Date currTime = new Date();
if(currTime>nextFireTime)
System.out.println("[jobName] : " + jobName + " [groupName] : "
+ jobGroup + " - " + has already executed);
}
}
0
如果你想跟踪所有的详细历史执行工作,那么你只需要做一个实现来跟踪所有这些信息。你可以使用监听器来达到这个目的。
根据您要完成的操作,您可以使用JobListeners,TriggerListeners或SchedulerListeners。
对于“全球性”的JobListener:
<initialize JobListeners>
public void jobWasExecuted(JobExecutionContext context, JobExecutionException jobException) {
try
{
jobKey = context.getJobDetail().getKey();
schedulerName = context.getScheduler().getSchedulerName();
jobName = jobKey.getName();
groupName = jobKey.getGroup();
//execution
Date startDate = context.getFireTime();
//execution time
long runTime=context.getJobRunTime();
//execution end
long endDateM = startDate.getTime() + runTime;
Date endDate = new Date(endDateM);
//get more information here
}
catch (Exception e)
{
e.printStackTrace();
}
注:请对性能的影响听众可以引起变化。如石英文件中提到:
可以本身使用了大量的听众 (TriggerListeners,的JobListener和SchedulerListeners)的石英减缓一件事。每个听众花费的时间为 显然会增加在作业执行之外“处理” 作业的时间。
这 并不意味着你应该感到害怕使用监听器的,它只是 意味着你应该明智地使用他们 - 不创建一堆 “全球性”的听众,如果你真的能够更加专业化的人。另外 不会在听众中做“昂贵”的事情,除非你真的需要 来。另外请注意,许多插件(例如“历史”插件) 实际上都是侦听器。
相关问题
- 1. 石英防止作业执行jobToBeExecuted
- 2. 根据执行的作业总数暂停作业执行 - 石英
- 3. 石英调度程序 - 允许并行作业执行
- 4. 石英弹簧作业执行多次。只需运行一次
- 5. 石英作业未运行,但石英表正在更新
- 6. 石英作业只运行一次
- 7. 恢复卡石英作业
- 8. 石英作业不启动
- 9. 石英作业重叠
- 10. 石英作业调节
- 11. 获取石英作业的“最后执行时间”
- 12. 在错误的日期石英CronTrigger执行作业/时间
- 13. 石英作业 - 不允许并发执行组?
- 14. 每天执行N次作业的一个石英表达式
- 15. 当Tomcat死亡时石英当前正在执行的作业
- 16. 石英调度程序在执行作业之前关闭
- 17. 石英作业在StartAt池启动时执行()
- 18. 如何配置石英以记录作业执行的时间?
- 19. 石英工作没有得到执行
- 20. 石英队列调度错过了预定作业
- 21. 了解作业
- 22. 石英调度程序丢失作业
- 23. 带Crontrigger的非重复石英作业?
- 24. 石英作业和组名 - 加密
- 25. 石英作业依赖关系
- 26. 石英调度程序作业迁移
- 27. 手动烧结石英作业
- 28. 石英调度器依赖作业
- 29. 简单的石英/ cron作业设置
- 30. 设置log4j的石英就业工作
hm,trigger.getPreviousFireTime()我想 –