开源项目
知识点
相关文章
更多最近更新
更多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); } }
相关问答
更多-
Quartz.Net作业存储查询(Quartz.Net Job Storage Query)[2022-04-30]
你可以使用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 ...