一、为什么需要Quartz集群
1、防止单点故障,减少对业务的影响
2、通过负载均衡,减少对节点的压力
3、注意事项
Quartz集群必须将配置持久化到数据库。
Quartz使用的是随机的负载均衡算法,不能指定节点执行。
注意Quartz集群各个节点的时间必须保持同步。
二、代码实现
1、工程结构

2、父节点pom配置
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
<!-- pagehelper 分页插件,包含了mybatis -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.7</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.8</version>
</dependency>
<!-- Mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
3、8081节点yml配置
8082配置一样,只是端口号是8082
# 数据库
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/quartz?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 123456
quartz:
job-store-type: jdbc
jdbc:
initialize-schema: always
properties: # quartz集群配置
org:
quartz:
jobStore:
isClustered: true
class: org.springframework.scheduling.quartz.LocalDataSourceJobStore
driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
misfireThreshold: 120000
threadPool:
threadCount: 20
scheduler:
instanceName: test-cluster
instanceId: AUTO
mybatis:
type-aliases-package: com.pzj.quartz.entity
mapper-locations: classpath*:mapper/**/*Mapper.xml
server:
port: 8081
4、编写任务代码
通过@Bean注解创建JobDetail,Trigger。
代码内容,可以参考前面的基础篇

836

被折叠的 条评论
为什么被折叠?



