很久没有记录一下新的东西了,最近看了一下java平台上的quartz框架,并计划把它使用在目前的项目中,去解决一些问题,如定时计算用户的收益,定时提醒用户预订的资源需要被使用等等。
一、quartz抽象出的任务调度
quartz是一个任务调度框架,通过用户设定的的规则(多为时间方面的规则)进行触发时间,quartz把任务调度领域抽象为不同的概念,使它们的实现可以复用。
任务(job):多为实际项目中用户计划定时触发的事件,如:闹钟,将要举行会议。
触发器(trigger):触发器功能是供用户设定时间规则,如:每天早上七点半;这周末,并当时间规则满足时,触发相应的任务
调度器(Scheduler):拥有任务与触发器还是不够的,调度器会把任务与调度器组合起来,如每天早上七点半的闹钟;这周末的会议
所以,任务与触发器是关联一起的,并且包含在调度器当中
(上图摘自http://liuzidong.iteye.com/blog/1118992 Quartz2之入门示例)
二、quartz任务调度抽象的组件
任务、触发器、调度器是quartz抽象出来的概念,以便于开发中交流使用,同样每一个概念都有其实现
任务(job):在quartz中,用户需要实现org.quartz.Job类,并实现execute方法,execute为任务的处理方法;
关于任务的描述、详情,quartz提供了org.quartz.JobDetail类,可以设置任务的一些信息。
触发器(trigger):在quartz中,分为SimpleTrigger和CronTrigger两种
SimpleTrigger为简单触发器,主要功能为固定时间长度的触发器,如,从现在开始,每隔10秒打印一句日志
CronTrigger为计划任务触发器,cron是linux中的概念,具体表现为设置时间描述的详细表达式,如:以后每个周日的22点重启服务器
调度器(Scheduler):在quartz中,为Scheduler接口