quartz集群

当项目在多台Tomcat上集群部署时,定时任务可能会被重复执行。为了解决这个问题并确保服务挂掉时不影响定时任务,可以使用Quartz实现集群。本文介绍了Quartz集群的配置,包括数据库脚本的执行、Spring配置文件的修改,以及测试和删除任务的方法。在测试过程中,发现启动时可能出现任务连续执行的情况,可以通过额外配置来避免。删除定时任务需要直接在数据库中操作。
摘要由CSDN通过智能技术生成

当项目部署在多个tomcat上进行集群后,定时任务就会有问题. 多个tomcat都会执行相同的定时任务.最简单的解决办法是把定时器只放到一个tomcat上运行,但是这样就不是集群了.

我们期望的是一台服务挂掉,不影响定时器执行. 这时候就用到了quartz的集群.


其实单机运行的时候,使用spring task 最方便, 2行代码就搞定了. 但是spring task不支持集群. 所以集群的话还是用quartz.


1.集群配置

2.测试

3.删除定时任务


1.集群配置

1)数据库脚本

我们可以想象,一个定时任务,只会执行一次,肯定要有一个全局的人来监控到底是哪个quartz去执行了这个任务,然后让别的quartz不再执行这个任务. 

那谁来当这个全局的人呢?  当然是数据库啦. quartz官方也提供了基于内存的Terracotta来管理. 我们这里就用数据库了.



去下载quartz的压缩包,里面自带sql脚本文件.点击打开链接


我们这里用的数据库是 mysql,innodb引擎的. 所以执行标红的sql脚本.


2) 配置文件

首先在spring-quartz中,增加个执行器配置,用于任务注册

	<bean id="executor"
		class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
		<property name="corePoolSize" value="10" />
		<property name="maxPoolSize" value="100" />
		<property name="queueCapacity" value="500" />
	</bean>

然后在总管理类中增加一些属性配置

	<bean id="startQuertz" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property na
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值