Quartz初浅使用
1、Quartz 简介
本教程建立在**SSM**整合点**Maven**项目的商城网站上 实现概览:通过提交商品订单,限制用户在规定时间付款,若仍未付款达到规定时间取消订单动作。
- 官方介绍
Quartz 是 OpenSymphony 开源组织在 Job scheduling 领域又一个开源项目,它可以与 J2EE 与 J2SE 应用程序相结合也可以单独使用。Quartz 可以用来创建简单或为运行十个,百个,甚至是好几万个 Jobs 这样复杂的程序。Jobs 可以做成标准的 Java 组件或 EJBs。 Quartz 用一个小 Java 库发布文件(.jar 文件),这个库文件包含了所有 Quartz 核心功能。这些功能的主要接口(API)是 Scheduler 接口。它提供了简单的操作,例如:将任务纳入日程或者从日程中取消,开始/停止/暂停日程进度。
2、下载及其安装
2.1 下载
官方 Site: http://www.quartz-scheduler.org
Click 下 Download 即可下载最新 这里显示最新为 2.2.3
2.2 添加 Maven 依赖
一般使用 Quartz 以及 Spring4 框架整合使用
1 | <dependency> |
和 Spring 整合,需要 spring-context-support 的 jar 包
3、简单剖析
Quartz 框架简单架构
- Schedule —— 核心调度器
- Job —— 任务
- JobDetail —— 执行任务器
- Tigger —— 触发器
使用方法:
- 制作一个任务 Job java 类 需要一个执行方法
- 将类放到 spring 容器内,注意需要注解
- 配置 jobDetail,指定相应的任务 job
- 配置一个 Tigger,编写一个由 corn 表达式的触发方法的触发器
- 配置一个配置调度工厂
执行流程图:
4、使用教程
4.1 创建一个 Job Java 类
值得注意需要声明 execute()
1 | public class Scheduler1 { |
4.2 配置 Spring
1 | <!-- 配置job类 --> |
值得注意:
1. job:scheduler1 – jobDetail:scheduler1 job:SpringQtzJobMethod – Trigger:SpringQtzJobMethod Trigger:CronTriggerBean – FactoryBean:CronTriggerBean
2.需要使用 corn 表达式
4.3 运行调试
运行 Maven 项目 clean tomcat7:run
1 | DEBUG - Calling execute on job DEFAULT.SpringQtzJobMethod |
看到以上 success 即成功
5、Corn 表达式
Cron 表达式的说明
字段名 | 允许的值 | 允许的特殊字符 |
---|---|---|
秒 | 0-59 | , - * / |
分 | 0-59 | , - * / |
时 | 0-23 | , - * / |
日 | 1-31 | , - * ? / L W C |
月 | 1-12 or JAN-DEC | , - * / |
周 | 1-7 or SUN-SAT | , - * ? / L C # |
年 | empty, 1970-2099 | , - * / |
Cron字符的说明
字符名 | 字符说明 |
---|---|
“?”字符 | 表示不确定的值 |
“,”字符 | 指定数个值 |
“-”字符 | 指定一个值的范围 |
“/”字符 | 指定一个值的增加幅度。n/m 表示从 n 开始,每次增加 m |
“L”字符 | 用在日表示一个月中的最后一天,用在周表示该月最后一个星期 X |
“W”字符 | 指定离给定日期最近的工作日(周一到周五) |
“#”字符 | 表示该月第几个周 X。6#3 表示该月第 3 个周五 |
Cron 常用表达式案例说明
表达式 | 含义 |
---|---|
0 0 12 ? | 每天中午 12 点触发 |
0 15 10 ? | 每天上午 10:15 触发 |
0 15 10 ? | 每天上午 10:15 触发 |
0 15 10 ? * | 每天上午 10:15 触发 |
0 15 10 ? | 2005 年的每天上午 10:15 触发 |
0 *14 ** ? | 在每天下午 2 点到下午 2:59 期间的每 1 分钟触发 |
0 0/5 14 ? | 在每天下午 2 点到下午 2:55 期间的每 5 分钟触发 |
0 0/5 14,18 ? | 在每天下午 2 点到 2:55 期间和下午 6 点到 6:55 期间的每 5 分钟触发 |
0 0-5 14 ? | 在每天下午 2 点到下午 2:05 期间的每 1 分钟触发 |
0 10,44 14 ? 3 WED | 每年三月的星期三的下午 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 | 每月的第三个星期五上午 10:15 触发 |
Cron 表达式构造器
Site: http://cron.qqe2.com
Jar 软件: CronExpBuilder-1.0