SpringBoot Quartz 集群

SpringBoot +Quartz + Mybatis + LayUI
通过数据库实现了Quartz集群。

一个动态管理Quartz任务的例子。不需要重启服务,即可以增加、修改、删除、停止、启动任务。
官网:http://www.quartz-scheduler.org/
SQL脚本

本例中使用的是MySQL数据库。
在resources\db目录下,需要创建quartz数据库,和sys_job表。
集群功能需要创建11张表:
在官网的Downloads链接中,提供了11张表的建表语句: quartz-2.2.3-distribution\quartz-2.2.3\docs\dbTables 2.3版本之后在这个路径下:src\org\quartz\impl\jdbcjobstore

注意:如果修改了任务的类名或者路径,因为任务已经保存在数据库中,需要清空上述11张表和sys_job重新添加。
否则启动会报错。

测试说明

如果直接在数据库修改了任务,启动之前,必须清空quartz的11张表,参考:resources/db/清空表脚本
启动工程,访问: http://localhost:9096/job/jobList
第三个任务是发送邮件的任务,SQL语句需要修改为自己的QQ账号和授权码,不需要可以把状态改成0或者删掉。
代码说明

需要运行的任务类放在task包下面,必须实现BaseJob接口。
config下面的类是保证SpringBoot工程启动的时候任务可以运行。
JobFactory是保证Spring的对象可以注入到Job里面。
最核心的类是 SchedulerUtil。
并发功能说明

在Job类上添加@DisallowConcurrentExecution 注解以后,任务就不会并行执行。
比如Task1,休眠60s(代表任务执行耗时60s),即使运行频率是1秒一次,在60s内也只会执行一次。
这时会造成其后的任务misfire(错过触发)。当正在执行的任务数超过线程池大小时,也会发生这种情况。
比如Task1去掉@DisallowConcurrentExecution 注解,如果1次运行60s,最多也只有10个Task1在运行。
造成misfire以后怎么办?CronTrigger和SimpleTrigger有不同的策略。
集群功能测试

复制多个工程,修改端口启动服务。 可以看到任务会随机地分配到几个机器,但是一定不会重复执行。

停掉一个或者多个服务,其他的服务会检测到,并接管任务。

代码:git@github.com:liuyun888/springboot-quartz.git

对于Spring Boot Quartz集群,你可以按照以下步骤进行配置和实现: 1. 首先,确保你的项目中引入了Quartz依赖,即`org.quartz-scheduler:quartz`和`org.quartz-scheduler:quartz-jobs`。 2. 创建一个Spring Boot应用,并在其中添加Quartz的相关配置。 3. 在你的应用程序的主类(例如QuartzSpringbootApplication)中添加`@EnableScheduling`注解,以启用Quartz调度。 4. 为了实现集群,你需要配置一个数据库作为Quartz的持久化存储。你可以使用任何支持的数据库,比如MySQL、PostgreSQL等。 5. 在你的application.properties或application.yml文件中,配置Quartz的数据源和相关属性。例如,你可以指定数据库的URL、用户名、密码等。 6. 在数据库中创建Quartz的相关Quartz提供了一个用于创建的脚本,你可以在官方文档中找到。 7. 配置Quartz的调度器。你可以通过编写一个QuartzConfig类,并在其中定义一个SchedulerFactoryBean bean来实现。在这个类中,你可以设置数据源、作业存储等属性。另外,你还可以设置一些其他的配置,比如调度器的线程池大小、线程名称等。 8. 在你的应用程序中创建一个或多个Quartz作业。你可以使用`@Component`注解将作业类标记为Spring的组件,并实现`Job`接口。 9. 在作业类中,实现`execute`方法来编写具体的作业逻辑。 10. 使用`@Scheduled`注解来配置作业的调度规则。你可以指定作业的执行时间、触发器类型等。 11. 在集群环境下,需要将调度任务持久化到数据库中。Quartz会自动将调度任务持久化到数据库,并在每个节点上同步。这样,当一个节点宕机时,其他节点可以接管执行。 12. 部署和运行你的Spring Boot应用程序。确保所有的节点都连接到同一个数据库,并且配置正确。 通过以上步骤,你可以配置和实现Spring Boot Quartz集群。这将允许你在分布式环境中使用Quartz调度任务,并确保高可用性和负载均衡的特性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云上凯歌

好活,当赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值