springboot(spring)集成quartz集群

任务需求:

  银行日终定时跑批,开始思路是使用最简单的方式Timer任务调度线程去跑,但是有个问题,Timer调度的话,不能够精准的时间,因为牵扯到集群的问题,所以最后考虑到了quartz集群

Quartz版本:

  2.3.1

Quartz 核心元素:

Quartz任务调度的核心元素为:Scheduler——任务调度器、Trigger——触发器、Job——任务。其中trigger和job是任务调度的元数据,scheduler是实际执行调度的控制器。

  Trigger是用于定义调度时间的元素,即按照什么时间规则去执行任务。Quartz中主要提供了四种类型的trigger:SimpleTrigger,CronTirgger,DateIntervalTrigger,和NthIncludedDayTrigger。这四种trigger可以满足企业应用中的绝大部分需求。

  Job用于表示被调度的任务。主要有两种类型的job:无状态的(stateless)和有状态的(stateful)。对于同一个trigger来说,有状态的job不能被并行执行,只有上一次触发的任务被执行完之后,才能触发下一次执行。Job主要有两种属性:volatility和durability,其中volatility表示任务是否被持久化到数据库存储,而durability表示在没有trigger关联的时候任务是否被保留。两者都是在值为true的时候任务被持久化或保留。一个job可以被多个trigger关联,但是一个trigger只能关联一个job。

  Scheduler由scheduler工厂创建:

 

DirectSchedulerFactory或者StdSchedulerFactory。看很多资料都是基于这两个去做的,本文是直接从工厂接口SchedulerFactory去做。

Scheduler主要有三种:

RemoteMBeanScheduler,RemoteScheduler和StdScheduler。也是基于接口去直接做不适用他们的3个实现。

正文:

工厂:

 

猜你喜欢

转载自www.cnblogs.com/hacker-lsr/p/12626457.html