1. 背景简介
如果项目中使用分布式并发部署定时任务,多台应用服务器同时工作,按照常理逻辑每台服务器的定时任务会各自运行。这样就会存在问题,一个是加重服务负担;另外一个是存在严重的逻辑问题,比如需要统计的数据,就在多台服务器上同时统计,这样会统计多次,又造成了浪费。
2. 技术简介
分布式任务调度我了解的主要有三种技术:Quartz、its、Spring-Task,本文主要讲 Quartz 的集群配置 与 Spring的整合。
3.Quartz简介
了解Quartz体系结构:
1.Job(任务):Job是一个接口,里面有一个execute 方法,我们需要调度的代码,全部都放在这里。
2.JobDetail: 该类就是用来描述Job的实现类及其它相关的静态信息,如Job名字、描述、关联监听器等信息。
3.Trigger(触发器):是一个类,描述触发Job执行的时间触发规则。
4.Scheduler(调度器):代表一个Quartz的独立运行容器,Trigger和JobDetail可以注册到Scheduler中,然后通过Scheduler来执行任务调度。
4.环境搭建
1.创建项目,搭建 SpringMVC+Quartz 环境
(我创建的是maven项目)
spring的版本是最新的 4.3.1, quartz的是 2.2.1
<!--用过Maven的自然懂,依赖太多就不一一贴了 -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.1</version>
</dependency>
2.Spring的简单配置
项目创建完成之后,记得做配置,在web.xml里面:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"