2017-02-03 2 views
2

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; 
} 

Antwort

1

Ich habe es nicht verwendet, um irgendein Problem zu bekommen, aber die folgenden Schnittstellen könnten Ihnen helfen.

Der TriggerListener konnte die Fehlzündung überprüfen, wenn Quartz den Job nicht starten konnte.

Der JobListener konnte überprüfen, ob der Auftrag erfolgreich abgeschlossen wurde und der Fehler aufgetreten ist.

http://www.quartz-scheduler.org/documentation/quartz-2.x/tutorials/tutorial-lesson-07.html

+0

Ich werde dieses Beispiel versuchen – Andrew

+0

Hai @ Andrew, ich bin auch gleiche Szenario konfrontiert, haben Sie die Lösung finden bitte mit uns teilen, Dank –

Verwandte Themen