Java定时任务调度工具Quartz(一)——简单介绍

引言

最近因为疫情闹得严重,业务部门需求少了很多,我这边相对比以前轻松一丢丢,终于可以把许多年前心头大患梳理一下搞一搞了。
我的心头大患是什么呢?就是这个系统的26个跑批,完全依赖JAR包,没有可视化操作页面,没有系统监控调度工具。就那么跑,裸跑。跑错了手工定位问题,手工协调数据,手工处理跑批。SHIT~

什么是Quartz

Quartz 是一个开源的作业调度框架,它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中。能够灵活地与Spring等框架集成,灵活简单,支持并发。

Quartz 的组成

  • Job:一个任务要执行的具体内容。
  • JobDetail:一个具体的可执行的调度程序,Job 是JobDetail要执行的内容,另外JobDetail还包含了这个任务调度的方案和策略。
  • Trigger:描述出发Job执行的时间触发规则。有SimpleTrigger和CronTrigger两个子类。代表两种方式,一种是每隔多少分钟小时执行,则用SimpleTrigger;另一种是日历相关的重复时间间隔,如每天凌晨,每周星期一运行的话,通过Cron表达式便可定义出复杂的调度方案。
  • Scheduler:代表一个调度容器,一个调度容器中可以注册多个 JobDetail 和 Trigger。当 Trigger 与JobDetail组合,就可以被Scheduler容器调度了。

Cron表达式

如果有操作过Linux的系统的朋友,对这个肯定相当熟悉了。
Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义。
域:
Seconds(秒):可出现", - * /“四个字符,有效范围为0-59的整数。
Minutes(分钟):可出现”, - * /“四个字符,有效范围为0-59的整数 。
Hours(小时):可出现”, - * /“四个字符,有效范围为0-23的整数 。
DayofMonth(日of 月):可出现”, - * / ? L W C"八个字符,有效范围为0-31的整数。
Month(月):可出现", - * /“四个字符,有效范围为1-12的整数。
DayofWeek(日of 星期):可出现”, - * / ? L C #“四个字符,有效范围为1-7的整数1表示星期天,2表示星期一, 依次类推。
Year(年):可出现”, - * /"四个字符,有效范围为1970-2099年。

格式: [秒] [分] [小时] [日] [月] [周] [年]
0 0 12 * * ? 每天12点触发
0 15 10 ? * * 每天10点15分触发
0 15 10 * * ? 每天10点15分触发
0 15 10 * * ? * 每天10点15分触发
0 15 10 * * ? 2005 2005年每天10点15分触发
0 * 14 * * ? 每天下午的 2点到2点59分每分触发
0 0/5 14 * * ? 每天下午的 2点到2点59分(整点开始,每隔5分触发)
0 0/5 14,18 * * ? 每天下午的 2点到6点59分(整点开始,每隔5分触发)
0 0-5 14 * * ? 每天下午的 2点到2点05分每分触发
0 10,44 14 ? 3 WED 3月每周三下午的 2点10分和2点44分触发
0 15 10 ? * MON-FRI 从周一到周五每天上午的10点15分触发
0 15 10 15 * ? 每月15号上午10点15分触发
0 15 10 L * ? 每月最后一天的10点15分触发
0 15 10 ? * 6L 每月最后一周的星期五的10点15分触发
0 15 10 ? * 6L 2002-2005 从2002年到2005年每月最后一周的星期五的10点15分触发
0 15 10 ? * 6#3 每月的第三周的星期五开始触发
0 0 12 1/5 * ? 每月的第一个中午开始每隔5天触发一次
0 11 11 11 11 ? 每年的11月11号 11点11分触发(光棍节)

总结

没啥说的~继续学习吧


作者:select you from me
来源:CSDN
转载请联系作者获得授权并注明出处。

你可能感兴趣的:(JAVA原理及应用)