简介:
- 开源的任务调度框架,提供了强大的调度机制
- 接口扩展性好,接入简单
- 支持调度运行环境的持久化机制
基础结构:
Job
是一个接口,内部只有一个方法 public void execute(JobExecutionContext context) throws JobExecutionException,开发者在方法体内实现自己的业务逻辑,JobExecutionContext提供了调度上下文的各种信息。
JobDetail
描述Job的实现类及其他静态信息,如Job名称、描述、关联监听器等信息,运行时通过newInstance()的反射机制实例化Job
Trigger
描述触发Job执行的时间规则,主要有SimpleTrigger和CronTrigger两个子类。当仅需触发一次或以固定时间间隔周期执行,SimpleTrigger是最合适的。如果是定义各种复杂的时间规则,CronTrigger比较合适。
Scheduler
表示Quartz的独立运行容器,Trigger和JobDetail可以注册到Scheduler中,两者在Scheduler中有各自的组和名称。一个Job可以对应多个Trigger,而一个Trigger只能对应一个Job。
常用的时间表达式:
表达式 | 说明 |
---|---|
0 0 12 * * ? | 每天12:00运行 |
0 15 10 ? * * | 每天10:15运行 |
0 15 10 * * ? | 每天10:15运行 |
0 15 10 * * ? * | 每天10:15运行 |
0 15 10 * * ? 2016 | 在2016年每天10:15 |
0 * 14 * * ? | 每天14点到15点之间每分钟运行一次,开始14:00,结束于14:59 |
0 0/5 14 * * ? | 每天14点到15点之间每5分钟运行一次,开始于14:00,结束于14:55 |
0 0/5 14,18 * * ? | 每天14点到15点之前每5分钟运行一次,另外每天18点到19点每5分钟也运行一次 |
0 0-5 14 * * ? | 每天14:00到14:05,每分钟运行一次 |
0 15 10 ? * MON-FRI | 每周一、二、三、四、五的10:15分运行 |
0 15 10 15 * ? | 每月15日10:15运行 |
0 15 10 L * ? | 每月最后一天的10:15运行 |
1 | 说明: |
pom依赖
1 | <dependency> |
代码示例:
1. 调度工厂配置,里面注册了所有的trigger触发器
1 | <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> |
SchedulerFactoryBean特点:
- 以Bean风格的方式为Scheduler提供配置信息
- 让Scheduler与Spring容器的生命周期建立关联
- 通过属性配置部分或全部代替Quartz自身的配置文件
2. trigger触发器,包含具体的任务和触发时间规则
1 | <bean id="hotPostsCollectTrigger" |
3. 编写自己业务的jobdetail类,实现job接口
1 | <bean id="hotPostsCollectJob" class="com.onlyone.bbs.task.job.HotPostsCollectJob" /> |
1 | public class HotPostsCollectJob implements Job { |