定时任务是互联网行业里最常用的服务之一,本文给大家介绍定时任务在我司的发展历程。
linux系统中一般使用crontab命令来实现,在Java世界里,使用最广泛的就是quartz了。我司使用quartz就已经升级了三代,每一代在上一代系统之上有所优化,写这篇文章一方面介绍一下quartz的使用,另一方面可以根据此项目的变迁反应出我司平台架构升级的一个缩影。
定时任务的使用场景很多,以我们平台来讲:计息,派息、对账等等。
quartz 介绍
Quartz是个开源的作业调度框架,为在Java应用程序中进行作业调度提供了简单却强大的机制。Quartz允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。Quartz可以集成几乎任何的java应用程序—从小的单片机系统到大型的电子商务系统。Quartz可以执行上千上万的任务调度。
Quartz核心的概念:scheduler任务调度、Job任务、JobDetail任务细节、Trigger触发器
Scheduler:调度器,调度器接受一组JobDetail+Trigger即可安排一个任务,其中一个JobDetail可以关联多个Trigger
Job:Job是任务执行的流程,是一个类
JobDetail:JobDetail是Job是实例,是一个对象,包含了该实例的执行计划和所需要的数据
Trigger:Trigger是定时器,决定任务何时执行
使用Quartz调度系统的思路就是,首先写一个具体的任务(job),配置任务的触发时间(Trigger),Scheduler很根据JobDetail+Trigger安排去执行此任务。
Quartz 定时器的时间设置