Quartz 调度作业查询

2019-04-23 00:21|来源: 网路

下面是两个代码片段展示如何列出所有Quartz的作业。Quartz2 API都发生了很大变化,所以语法和Quartz1.x是不同的

1. Quartz 2.2.1 示例

Scheduler scheduler = new StdSchedulerFactory().getScheduler();
 
   for (String groupName : scheduler.getJobGroupNames()) {
 
     for (JobKey jobKey : scheduler.getJobKeys(GroupMatcher.jobGroupEquals(groupName))) {
 
	  String jobName = jobKey.getName();
	  String jobGroup = jobKey.getGroup();
 
	  //get job's trigger
	  List<Trigger> triggers = (List<Trigger>) scheduler.getTriggersOfJob(jobKey);
	  Date nextFireTime = triggers.get(0).getNextFireTime(); 
 
		System.out.println("[jobName] : " + jobName + " [groupName] : "
			+ jobGroup + " - " + nextFireTime);
 
	  }
 
    }


2. Quartz 1.8.6 示例

    Scheduler scheduler = new StdSchedulerFactory().getScheduler();
 
    //loop all group
    for (String groupName : scheduler.getJobGroupNames()) {
 
	  //loop all jobs by groupname
	  for (String jobName : scheduler.getJobNames(groupName)) {
 
          //get job's trigger
	    Trigger[] triggers = scheduler.getTriggersOfJob(jobName,groupName);
	    Date nextFireTime = triggers[0].getNextFireTime();
 
	    System.out.println("[jobName] : " + jobName + " [groupName] : "
			+ groupName + " - " + nextFireTime);
 
	  }
 
    }


相关问答

更多
  • 你可以使用AdoJobStore。 Quartz.net将使用一组前缀为QRTZ_的表(如果需要,可以更改它)存储作业,触发器和这些对象的状态。 我想你想在你的数据库中有一张桌子,在那里你会保存关于你的日程安排的扩展信息,对吧? 您将不会直接访问Quartz.net表,因为您将使用Quartz.net提供的API。 创建工作细节和触发器的过程很简单,并在教程中进行了很好的描述。 要配置您的应用程序以使用AdoJobStore,您必须在app.config文件中指定一些信息。 这里是一个例子:
  • 看起来,EJB 3.1定时器对于它们驻留的bean来说是私有的,这使得收集它们和检查它们的过程变得相当困难。 这不幸的确如此,请参阅我对这个类似问题的回答: 如何获取所有EJB计时器? 另外,看起来EJB 3.1定时器纯粹是编程/声明性的,即它们需要重新部署来修改它们的参数或设置。 那么,从你计划定时器的bean中,你可以取消一个定时器并重新安排它,如果你想。 总而言之,在使用EJB 3.1定时器一段时间后,我可以说它们非常方便,但仍然有一些遗漏。 你在这里提到的问题只有一个,但是也没有可移植的方式来指定定 ...
  • 您是否已经检查了Java中开源作业计划程序中列出的所有内容: jcrontab 石英 支点计划 Essiembre J2EE调度程序 Gos4j Oddjob 作业计划程序 JDRing jBatchEngine MyBatchFramework 超 cron4j Did you already check all of those listed in Open Source Job Schedulers in Java: jcrontab Quartz Fulcrum Scheduler Essiembr ...
  • 石英日历只定义包含。 这里是界面: public interface Calendar { public boolean isTimeIncluded(long timeStamp); public long getNextIncludedTime(long timeStamp); } 一些实现用于定义排除,但其他支持包含。 看看DailyCalendar和它的invertTimeRange属性。 既然你提到你只想在日历中包含特定的日子,我怀疑你可能不得不实现你自己的日历。 查看BaseCa ...
  • 我找到了如何中断作业...我只需要实现IInteruptableJob接口, interrupt方法什么都不做。 这篇文章给了我很多帮助! I found how to interrupt the job... I simply had to implement the IInteruptableJob interface, with an interrupt method doing nothing. This post helped me a lot!
  • 您可以查看Quartz.NET zip发行版附带的Quartz.Server示例。 也可以在GitHub上直接使用: https://github.com/quartznet/quartznet/tree/master/server/Quartz.Server 您应该共享相同的调度程序。 只创建一次调度程序工厂并从那里获取单例调度程序。 您可以将您的作业添加一次,使调度程序持久,并使用触发器作业数据映射对其进行参数化。 然后,您可以访问组合作业并从作业执行上下文附带的MergedJobDataMap触发数据 ...
  • 在插件文档http://grails.org/plugin/quartz中查找“动态作业调度”部分 您需要为每个ScheduledTask实例动态创建一个作业(可能是它创建的实例) 遵循文档并编写代码应该相对容易。 如果你遇到困难,那就在SO上发布一个特定的问题。 Look up the section on "Dynamic Jobs Scheduling" in the plugin docs http://grails.org/plugin/quartz You need to dynamically ...
  • 我最终将工作名称传回给经理 EventScheduleManager.getInstance().eventComplete (jobExecutionContext.getJobDetail().getName()); 并且管理器本身维护了Map从那里获取它 I ended up passing the job name back to the manager EventScheduleManager.getInstance(). ...
  • 我用过石英。 以下是石英的一些优点 如果你使用基于操作系统的cron,jvm会上下移动,任何状态都会丢失。 它是可移植的(可以在没有cron的Win OS上运行) 您可以在quartz中安排多个线程 我们在tomcat中运行调度程序,因此我们可以通过管理员网页管理和查看应用程序的状态。 在我们的应用程序中,我们使用jamon来监控我们的流程状态。 它可以回答诸如......目前正在运行哪些进程? 他们什么时候上次跑? 他们花了多长时间? 等cron不允许这样做。 您的代码将更加便携。 调度在不同的OS中以不 ...
  • 它不仅支持这种行为,而且基本上没有其他方法。 一旦计划了作业和触发器(在任何线程中),该作业将在线程池中异步执行。 您可以像线程数一样控制该线程池。 另一个问题是并行执行相同的工作。 默认情况下,相同的作业可以在由不同线程启动的多个线程中运行,除非作业是有状态的 。 Not only it supports this behaviour but there is basically no other way. Once you schedule a job and a trigger (in any thr ...