时间如白驹过隙,转瞬即逝,转眼间又到了一年的尾声。去年这个时候,还是一个刚刚走出学校,加入程序员队伍的一名小菜鸟程序员,这一年经历过了几个项目的洗礼,已经成长为了一名大菜鸟程序员。去年此时,正好有幸学习公司已经完成的支付网关的项目,对于一个初入行业的新人,项目中用到技术对我的吸引实在是太大了。今天就来聊聊这个项目中用到的定时任务框架Quartz。
##初识
官方文档对Quartz的描述:
Quartz是一个拥有丰富特性,开源的作业调度类库。小到独立的java应用程序,大到电子商务系统都可以将Quartz整合到其中。Quartz可以创建简单或者复杂的调度程序来执行作业,而作业作为java的组件来执行你希望实现的任何功能。
我的描述:Quartz就是在对的时间做对的事。
##再看
在Quartz官网下载了他的文档,有好几篇,看着也真是够够的了。其实我认为只需要了解三个核心的内容,就可以对Quartz进行使用了。三个核心内容是什么呢?作业,触发器,调度程序。下面我们依次聊聊这三项。
-
作业(Job)
-
作业就是你希望在对的时间做什么事。在Quartz中作业的定义很简单,只需要实现Job接口,并实现它的execute方法就可以定义你希望做的事情。
例如:
public class HelloJob implements Job {
Logger logger=LoggerFactory.getLogger(HelloJob.class);
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
logger.info("Hello World:"+new Date());
}
}
关于作业的存储:在Quartz中对作业有多种的持久化操作。
- JobStore接口,它提供了多种多样的机制来存储作业。
- JDBCJobStore接口,它可以将作业通过JDBC存储到数据库中。
- RAMJobStore,通常我们使用的是RAMJobStore,将作业以及触发器存储在内存中。
-
触发器(Trigger)
- 触发器会在你希望的对的时间对作业进行触发。在Quartz中,已经定义好了一系列的builder类,它们可以被开发人员用来创建相应的触发器,作业,作业调度等对象。在创建触发器的时候,我们只需要使用TriggerBuilder即可创建Trigger即可。在实际应用中,比较常用的两种触发器是SimpleTrigger和CronTrigger。
- SimpleTrigger:用于简单的触发以及重复执行作业任务。首先看一段代码:
@Test
public void test04(){
logger.info("--------初始化调度程序-----");
Scheduler scheduler=getScheduler();//通过工厂类SchedulerFactory创建Scheduler,详见后文
logger.info("--------初始化调度程序完成-----");