quartz
来源:互联网 发布:门口的野蛮人 知乎 编辑:程序博客网 时间:2024/05/18 14:25
quartz:job scheduler
背景
目前我们项目任务的调度都是基于linux自身的crontab来实现的,其可以实现大部分周期性任务的需求,但遇到一些特殊的周期性需求—-比如节假日不运行等等这样的任务时,就无能为力,而quartz能够很好的胜任。
quartz是什么?
quartz是一个完全由Java编写的开源调度框架(库),利用它,可以很简单的在java应用程序中进行作业调度,其可以用来创建或调度运行十个,百个,甚至是好几万个Jobs。
能够实现什么样的调度
- 一天中的某个时刻(精确到毫秒)
- 一周中的几天
- 一个月中的几天
- 一年中的几天
- 日历中的特定时间(例如商务假期)
- 重复特定次数
- 不断重复直到特定的时间/日期
- 无限重复
- 延时重复
核心概念
- scheduer:任务调度器
- trigger:触发器,用于定义任务调度时间规则
- job:任务,即被调度的任务
- misfire:错过的,指本来应该被执行但实际没有被执行的任务调度
cron表达式
通配符说明
* 表示所有值,比如在分的字段上设置"*",则表示每分钟都会触发;
? 表示不指定值,比如要在每月的10号触发一个操作,但不关心是周几,所以需要周位置的那个字段设置为"?"
- 表示区间,比如在小时位上设置10-12,则表示10,11,12点都会触发
, 表示指定多个值,比如在周字段上设置"MON,WED,FRI" 表示周一,周三和周五触发
/ 表示递增触发。如在秒上面设置"5/15" 表示从5秒开始,每增15秒触发(5,20,35,50)。
L 表示最后的意思。在日字段设置上,表示当月的最后一天(依据当前月份,如果是二月还会依据是否是润年[leap]), 在周字段上表示星期六,相当于"7"或"SAT"。如果在"L"前加上数字,则 表示该数据的最后一个。例如在周字段上设置"6L"这样的格式,则表示“本月最后一个星期五"
W 表示离指定日期的最近那个工作日(周一至周五). 例如在日字段上设置"15W",表示离每月15号最近的那个工作日触发。如果15号正好是周六,则找最近的周五(14号)触发, 如果15号是周 未,则找最近的下周一(16号)触发.如果15号正好在工作日(周一至周五),则就在该天触发。如果指定格式为 "1W",它则表示每月1号往后最近的工作日触发。如果1号正是周六,则将在3号下周一触 发。(注,"W"前只能设置具体的数字,不允许区间"-").
# 序号(表示每月的第几个周几),例如在周字段上设置"6#3"表示在每月的第三个周六.注意如果指定"#5",正好第五周没有周六,则不会触发该配置(用在母亲节和父亲节再合适不过了)
提示:
'L'和 'W'可以一组合使用。如果在日字段上设置"LW",则表示在本月的最后一个工作日触发(一般指发工资 );周字段的设置,若使用英文字母是不区分大小写的 MON 与mon相同.
周字段的设置,若使用英文字母是不区分大小写的 MON 与mon相同.
FAQ
怎么执行任务链?或者说怎么创建工作流?
目前还没有直接的或自由的方式通过Quartz链式触发任务。只能通过别的方法来实现:
- 使用监听器(TriggerListener,JobListener 或者SchedulerListener),可以通知到某个工作完成,然后可以开始另一个任务。
- 创建一个Job,它的JobDataMap 包含下一个Job的名字,当这一个job执行完毕再执行下一个任务。
- Quartz
- quartz
- Quartz
- Quartz
- quartz
- quartz
- quartz
- Quartz
- Quartz
- Quartz
- Quartz
- Quartz
- Quartz
- Quartz
- quartz
- Quartz
- Quartz
- quartz
- linux 性能监控-- top
- JBPM的安装与使用(一)
- 浙大数据结构-HuffMan Code
- 量化分析(8)——唐安奇通道
- 每周LeetCode算法题(七): 题目: 198. House Robber
- quartz
- localhost:8080和localhost:8080/应用名 报错404及project—clean与tomcat—clean区别
- python中 with as 用法
- python学习(十九)
- git fetch 和pull区别
- UVA10474查找优化
- ArrayList、Vector、HashMap、HashTable、HashSet的默认初始容量、加载因子、扩容增量
- RTAI API---Mailbox functions
- is_null,is_numeric