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()我想 –