【问题标题】:How to check which Quartz Scheduler job is not running如何检查哪个 Quartz Scheduler 作业没有运行
【发布时间】:2022-04-26 19:43:18
【问题描述】:

我有以下代码,用于检查正在运行的石英调度程序作业。它还向我发送了一封电子邮件,其中包含正在运行的调度程序作业列表。但我不知道它没有返回所有正在运行的调度程序作业。现在我只想知道那些有问题、停止且未运行的调度程序作业。我在生产环境中发现了关键问题,我发现一些调度程序作业没有运行,但我真的不知道它是哪个调度程序作业。

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

【问题讨论】:

    标签: java spring triggers quartz-scheduler


    【解决方案1】:

    我没有用它来解决任何问题,但以下接口可以帮助你。

    当 Quartz 无法启动作业时,TriggerListener 可以检查失败。

    JobListener 可以检查已完成的作业,包括成功和失败的情况。

    https://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/tutorial-lesson-07.html

    【讨论】:

    • 我会试试这个例子
    • 海@Andrew,我也面临同样的情况,您找到解决方案了吗,请与我们分享,谢谢
    • 链接现在已断开。请考虑更新它。
    • 更新了链接
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 2014-08-08
    • 1970-01-01
    相关资源
    最近更新 更多