Bootstrap

Quartz一次性作业调度

近日在用Quartz进行任务调度时碰到的问题记录。

首先了解下Quartz:
1、Quartz 是一个完全由 Java 编写的开源作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。
2、Quartz 可以与 J2EE 与 J2SE 应用程序相结合也可以单独使用。
3、Quartz 允许程序开发人员根据时间的间隔来调度作业。
4、Quartz 实现了作业和触发器的多对多的关系,还能把多个作业与不同的触发器关联。

Quartz的触发器主要有以下几种:
1、SimpleTrigger:在具体的时间点执行一次,或者在具体的时间点执行,并且以指定的间隔重复执行若干次。比如,你有一个trigger,你可以设置它在2015年1月13日的上午11:23:54准时触发,或者在这个时间点触发,并且每隔2秒触发一次,一共重复5次。

2、CronTrigger:通常比Simple Trigger更有用,如果您需要基于日历的概念而不是按照SimpleTrigger的精确指定间隔进行重新启动的作业启动计划。使用CronTrigger,您可以指定号时间表,例如“每周五中午”或“每个工作日和上午9:30”,甚至“每周一至周五上午9:00至10点之间每5分钟”和1月份的星期五“。

本次就是使用CronTrigger来作为任务调度,主要需求是在某一时间点(如:2021-06-12 12:00:00)触发任务。但是在实际使用中发现任务调度总是不起作用。这个时候怀疑是触发器没有配置好,研究了好久发现仍然不起作用。CronTrigger主要依据是cron表达式,那会不会是表达式错误了呢。之前的cron表达式为(ss mm HH DD MM ? yyyy),用cron表达式解析器一解析才发现是表达式有问题。真正的定时一次性运行表达式为(ss mm HH DD MM ? yyyy-yyyy),比如想在2021-06-12 12:15:00运行,则表达式为(00 15 12 12 06 ? 2021-2021)。

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;