Spring整合Quartz的时序调度

3 views
Skip to first unread message

nighthawk

unread,
Feb 27, 2006, 11:51:45 PM2/27/06
to Programmer Cafe
研究spring不深,但最近在使用spring的过程中,发现它总能给人带来点惊喜。
相信大家在做程序的时候应该会碰到时序调度一类的问题,即希望在指定时刻执行某段程序,在spring之前我的第一反应便是在数据库中加job。然而现在,Spring提供了支持时序调度的整合类Quartz,它把复杂的事情完全简单化了,在此我不想再赘叙关于spring中如何去整合Quartz,具体的spring详细配置
请参照http://www.jactiongroup.net/reference/html/scheduling.html。使用过程很简单,
关于Quartz的说明参照官网的一段描述
What is Quartz?
Quartz is a full-featured, open source job scheduling system that can
be integrated with,
or used along side virtually any J2EE or J2SE application - from the
smallest stand-alone application to the largest e-commerce system.
Quartz can be used to create simple or
complex schedules for executing tens, hundreds, or even
tens-of-thousands of jobs; jobs whose tasks are defined as standard
Java components or EJBs. The Quartz Scheduler includes many
enterprise-class features, such as JTA transactions and clustering.
您也可以参考以下链接进行更深入的了解http://www.opensymphony.com/quartz
在使用的过程中,需要再对cronExpression的配置解释一下,如果没有使用过unix的cron,这里确实有点让人迷惑,我便在这里迷惑了一把。Cron表达式是字符串,它由六个或七个子表达式组成,它描述了不同的调度细节。这些子表达式被白色

表达式隔开,格式为* * * * * *
以下的表格对表达式做出了解释
域 是否必须 允许的值 允许的字符
Seconds YES 0-59 , - * /
Minutes YES 0-59 , - * /
Hours YES 0-23 , - * /
Day of month YES 1-31 , - * ? / L W C
Month YES 1-12 or JAN-DEC, - * /
Day of week YES 1-7 or SUN-SAT , - * ? / L C #
Year NO empty,1970-2099, - * /

比如:字符串“0 0 12 ? * WEB 意味着每周三上午12:00。
特殊字符的一些说明:
* 表示的是所有的值,比如在秒的位置上有*
则表示为每一秒种。所以,你在表示每5分钟执行一次的时

候便不能写成 * 0/5 * * * ? 而应该是0 0/5 * * * ?
?
表示没有指定特别的值,是允许为月的某一天或者周的某一天字段的。它被用来限定"没有限定值"。这是有用的,当你需要限定一些事情在一个或两个字段中,但不是这里的。有一个特别需要主意的地方便是*与?的搭配使用。比如在Day
of month与Day of week全是*
,那边自相矛盾了。官网中给出的例子没出现过这种情况。
- 表示范围,比如Hours域中10-12,则表示 "the hours 10, 11
and 12".
,表示指定特别的附加值,比如"MON,WED,FRI" 在 day of week
域表示"the days Monday, Wednesday, and Friday"
/ 表示指定的增长范围。比如"0/15" 在秒的区域表示"0,
15, 30, and 45"秒。

"L"字符是允许用来月某天和周某天字段。这个字符是一个"last"的缩写,但是它有不同的意义在两个字段的其中之一。例如,这个值"L"在月字段的某一天意味着"
这个月的最后一天",31或者28等等。

Reply all
Reply to author
Forward
0 new messages