一套老系统,采用Quartz进行一些定期任务。新加定期任务,处理数据库中的某些数据。由于采用了tomcat集群,有多台服务器并且同一台机器上有多个tomcat。
代码简单,但是出来以后发现由于多个任务会同时进行,导致同一条数据被多次处理。毫无疑问,这种情况是无法接受的。首先想到的是通过配置Quartz实现任务同步。但是对Quartz不是很熟悉,Google一轮下来,发现Quartz提供了同步,但是配置似乎相当复杂,并且出来的效果是Quartz集群,同一个时刻只能一个tomcat的Quartz运行,而我应用中有些任务必须每个tomcat必须运行,感觉没达到要求。
第二步,决定自己处理,尝试了几种方法,没达到预期效果。
最后,想到一个感觉有点取巧的办法。不知道会有什么问题,但是暂时解决问题。
做法是定义一张新表,只有一个字段ID,默认插入一条记录。
定义一个函数,每次开始任务时load该行并且锁定。
public void getLock() { session = this.getSession(); tx = session.beginTransaction(); session.load(TLock4Check.class, 1,LockMode.UPGRADE); }
任务结束时,放弃锁定
public void releaseLock() { tx.rollback(); this.releaseSession(session); }
看起来有效果,达到预期效果,但总觉得不太正统,下次找个比较正统的解决方案替换之。
相关推荐
spring多个定时任务quartz配置
如果需要扩展以支持数千个短期运行(例如1秒)作业,则可以考虑通过使用多个不同的调度程序(包括HA的多个群集调度程序)对作业集进行分区。 调度程序使用集群范围的锁,这种模式会在添加更多节点(超过三个节点 - ...
Quartz.net作业调度自定义定时执行任务多任务执行c#,定时执行任务,如超时取消订单,自动确认收货等等
Quartz + spring简单配置多个任务调度 spring配置文件 简单配置
从以上位置可以查看详细介绍。 网上能找到的Quartz Web管理的资料都是使用的一个国外人写...包括可以添加一个任务(添加的任务只能是实现了Quartz Job接口的任务),暂停、启动、删除任务。基本这些都能满足日常应用了。
下载导入就可以用,执行test类的main方法加载spring applicationContext.xml配置文件,启动Quartz定时器.修改spring配置文件的配置时间.详细看注释
只需实现Quartz.IJob接口,IJob接口包含唯一的一个方法Execute(),作业从这里开始执行。一旦实现了IJob接口和Execute ()方法,当Quartz.NET确定该是作业运行的时候,它将调用作业。Execute()方法内就是要做的事情。
一个基于springboot的quartz集群dome。 向http://localhost:9090/job/addjob注入3个参数 ...组名:随意 定时启动方法:如“0/3 * * * * ?...本项目没有接入多个节点所以支持集群却没有真正实现,否则不好启动。
定时任务quartz实现分组串行并行动态配置
Quartz使用方法Quartz使用方法Quartz使用方法Quartz使用方法Quartz使用方法
spring 定时器 内含TimerTask实现和Quartz实现两种方式
深入解读Quartz的原理,定时任务框架是web开发过程中使用很多的框架之一
Quartz SimpleTrigger CronTrigger java 源码 多任务 单任务实现 jobQuartz SimpleTrigger CronTrigger java 源码 多任务 单任务实现 job
1、从数据库中获取定时任务执行; 2、在数据库中修改定时任务后,执行任务也可以更新(刷新间隔时间); 3、适应于spring 于quartz不能...6、更多jcrontab相关知识,请在网上搜索,附件旨在提供一个可以用的示例demo 。
一个简单的quartz小例子,还不是很全,只有简单的实现。
主要介绍了spring boot整合quartz实现多个定时任务的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
使用quartz定时器实现系统多活,可以实现很多功能,比如集群中的系统多活检测,多设备接入的时候为每个设备创建定时获取数据机制,利用Quartz设计采集系统并实现系统双活机制_在SpringCloud中自己设计系统双活
spring 集成quartz定时任务 用数据库实现quartz的集群
Quartz使用StdSchedulerFactory(调度器工厂)实现多线程原理,可以自定义线程个数来实现不同的需求,代码中有详细注释说明
文件里面包括 1:Quartz开发指南.pdf 2:Quartz从入门到进阶.pdf 3:QuartzBeginnerExample一个附带的工程例子 4:quartz-1.6.1.zip Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它...