Quartz与Spring结合使用及集群配置
本文的原文在我个人的CSDN上。是在2017年的时候由于工作上面需要用到在集群环境中使用调度,采用了Quartz实现,当时进行了记录。不过现在我写博客主要是在个人站点上,所以就把之前的博客部分搬移过来了。
本文代码github地址
quartz介绍
quartz是进行任务调度执行的框架,相对于Java中线程池调度以及Spring自带注解的调度方法,有以下几个有点:
- 能够支持上千上万个调度任务的执行
- 任务调度方式较为灵活
- 支持集群
运行环境
- quartz版本:2.2.1,这是quartz最新的版本,其他版本可能跟此版本有一定差异
- 操作系统centos7,我在vmware中搭建了三台独立的虚拟机
- JDK8
- 数据库:mysql 5.7.18
- tomcat8
工程目录结构
工程目录结构如下,采用Idea IDE
文件说明:
resources下是各种配置资源,create-schema.sql用于创建任务表,tables_mysql_innodb.sql用于创建quartz集群运行需要的表,共有十一张表。quartz_properties是quartz的配置
主要配置文件内容
配置文件中都有每个配置项详细的说明,我这里就只给出具体的配置内容
spring配置文件有两个,分别为applicationContext.xml和spring-mvc.xml
applicationContext.xml文件如下
1 |
|
spring-mvc.xml内容如下:
1 |
|
Quartz配置文件为quartz.properties,内容如下:
1 | #配置参数详解,查看http://haiziwoainixx.iteye.com/blog/1838055 |
运行
当按照此项目配置完成之后,将项目打包成war包,然后在一台centos下启动项目,添加任务,之后再另一台centos下也运行此war包。为了简单起见,这里添加的任务仅仅是输出任务的详细信息,并没有其他动作。在两台机器的catalina.out中可以看到输出的结果,可以看到任务可以负载均衡的运行在不同的机器上。
如何动态的查看catalina.out中的内容,可以用tail -f来查看,能够实时看到文件的变化