Spring自带定时器quartz重跑问题

一、场景描述

公司系统需要增加一些定时任务,最开始是每个定时任务都配置一个专用的调度工厂、触发器等等。后来公司项目越来越大,需要配置的定时任务越来越多,定时任务的时间策略等需要变动的时候必须修改配置。这些问题越来越多,于是就建表,写了个专门扫表获取相关定时任务的触发器。除了这个之外别的触发器通通配置在表里。

二、问题与调试

1、某天报生产问题,业务报表出错,经查,发现是报表的定时任务重复执行的原因。把附近日志打印输出,无异常发生。

2、去询问技术是否有改动数据库的定时任务时间策略,得到信息,有同事更改过另一个定时任务的时间策略。但并不会造成重跑

3、在测试环境启动各定时任务,随机更改某一个批的时间策略。写了一个监控执行次数的脚本,经过数据对比发现当时间策略改变的时候,偶尔会随机造成某个定时任务重复执行。原因找到了

4、google之,只搜索到只言片语。

三、问题解决方法

第一种:每次更改时间策略的时候尽量保证定时任务不与数据库交互信息

第二种:每次更改后重启

第三种:代码逻辑可以重跑

四、补充

    除了上述原因外,要注意触发器名称,调度工厂名称是否重复,如果重复也会发生上述问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值