Spring自带定时器quartz重跑问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Maskkiss/article/details/79568502

一、场景描述

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

二、问题与调试

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

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

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

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

三、问题解决方法

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

第二种:每次更改后重启

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

四、补充

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

猜你喜欢

转载自blog.csdn.net/Maskkiss/article/details/79568502
今日推荐