2017-02-03 5 views
2

私は以下のコードを使用して、どのクォーツスケジューラジョブが実行されているかを確認しています。また、実行中のスケジューラージョブのリストを電子メールで送信します。しかし、私は実行しているすべてのスケジューラージョブを返さないことを知っていません。そして今、私は問題を持っているスケジューラージョブだけを知りたい、停止し、実行していません。私はスケジューラージョブのいくつかが実行されていないことがわかった私の生産環境で重大な問題を発見しましたが、スケジューラージョブがどれか分かりません。Quartz Schedulerジョブが実行されていないことを確認する方法

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

答えて

1

私はそれを使用して問題を解決していませんが、以下のインターフェイスが役に立ちます。

Quartzがジョブを開始できなかった場合、TriggerListenerは失火をチェックできます。

JobListenerは、成功したジョブと失敗したジョブの両方を完了したことを確認できました。

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

+0

私はこの例をしようとします – Andrew

+0

ハイ@Andrewを、私も同じシナリオに直面しています、あなたが解決策を見つけた私たちと共有してください、ありがとうございます –

関連する問題