Ich habe unter dem Code, den ich verwendet habe, um zu überprüfen, welcher Quartz Scheduler Job ausgeführt wird. Und es sendet mir auch eine E-Mail die Liste der laufenden Scheduler-Job. Aber ich weiß nicht, dass es nicht alle Schedulerjobs zurückgibt, die laufen. Und jetzt möchte ich nur jenen Schedulerjob wissen, der Probleme hat, angehalten und nicht läuft. Ich habe ein kritisches Problem in meiner Produktionsumgebung gefunden, wo ich festgestellt habe, dass einige der Scheduler-Jobs nicht ausgeführt werden, aber ich weiß wirklich nicht, welcher Scheduler-Job es ist.Wie überprüfe ich, welcher Quartz Scheduler Job nicht ausgeführt wird
public String getPrintJobs() {
StringBuilder sb = new StringBuilder();
try {
sb.append("Quartz Jobs\r\n\r\n");
Scheduler scheduler = this.getJobScheduler();
// All scheduled jobs
for (String groupName : scheduler.getJobGroupNames()) {
for (JobKey jobKey : scheduler.getJobKeys(GroupMatcher.jobGroupEquals(groupName))) {
JobDetail jobDetail = scheduler.getJobDetail(jobKey);
final List<? extends Trigger> triggers = scheduler.getTriggersOfJob(jobKey);
Date nextFireTime = null;
int priority = 5;
if (triggers.size() > 0)
{
nextFireTime = triggers.get(0).getNextFireTime();
priority = triggers.get(0).getPriority();
}
sb.append("Name= "+ jobKey.getName() + " Group=" + jobKey.getGroup() + " NextFireTime=" + nextFireTime + " Priority=" + priority + " Paused=" + (isJobPaused(jobKey.getName())?"IS PAUSED":"NOT PAUSED") + " Triggers #=" + triggers.size() + "\r\n\r\n");
}
}
sb.append("End Quartz Jobs\r\n\r\n");
} catch (Exception e) {
logger.debug("debugPrintJobs:" + e.getMessage());
}
return sb.toString();
}
private Boolean isJobPaused(String jobName) throws SchedulerException {
Scheduler scheduler = this.getJobScheduler();
JobKey jobKey = new JobKey(jobName);
JobDetail jobDetail = scheduler.getJobDetail(jobKey);
List<? extends Trigger> triggers = scheduler.getTriggersOfJob(jobDetail.getKey());
for (Trigger trigger : triggers) {
TriggerState triggerState = scheduler.getTriggerState(trigger.getKey());
if (TriggerState.PAUSED.equals(triggerState)) {
return true;
}
}
return false;
}
Ich werde dieses Beispiel versuchen – Andrew
Hai @ Andrew, ich bin auch gleiche Szenario konfrontiert, haben Sie die Lösung finden bitte mit uns teilen, Dank –