首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检查哪个Quartz Scheduler作业未运行

如何检查哪个Quartz Scheduler作业未运行
EN

Stack Overflow用户
提问于 2017-02-03 18:58:29
回答 1查看 2.4K关注 0票数 2

我有下面的代码,我用它来检查哪个quartz调度程序作业正在运行。它还会向我发送一封电子邮件,列出正在运行的调度程序作业的列表。但我不知道它没有返回所有的调度作业,现在是running.And,我只想知道那些有问题,停止和不运行的调度作业。我在我的生产环境中发现了严重的问题,我发现一些调度程序作业没有运行,但我真的不知道是哪个调度程序作业。

代码语言:javascript
运行
复制
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;
 }
EN

回答 1

Stack Overflow用户

发布于 2017-02-07 21:52:27

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

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

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42022649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档