quartz定时任务不执行

quartz定时任务执行一段时间不执行的原因

数据库表QRTZ_TRIGGERS 里的TRIGGER_STATE 字段的值自动修改为ERROR了 ,quartz定时任务是不扫描这种ERROR情况.

之所以出现ERROR 原因在于job里有bug,导致quartz自动将状态改变,然后quartz不执行ERROR状态的job.

1.查找原因

原因如下图:( 查找原因的方法是 将ERROR改为正常状态时,会打印错误 )

TRIGGER_STATE的状态有:

WAITING:等待 

PAUSED:暂停 

ACQUIRED:正常执行 

BLOCKED:阻塞 

ERROR:错误

quartz定时任务不执行

2.数据库的现象

如下图:

quartz定时任务不执行

其中TRIGGER_STATE 状态的字段为ERROR ,可以将其改为上面的WAITING:等待或者ACQUIRED:正常执行 然后重启项目,这时在控制台可能会有一图所示类似的错误日志.

3.TRIGGER_STATE 字段改变后不会自动改正,并且quartz定时任务不扫描ERROR 状态

因此,quartz定时任务可能执行几次后遇到job里的bug就自动修改了状态,那么这个quartz定时任务就不再执行了.

4.解决方案

解决quartz定时任务job里的bug,然后将数据库QRTZ_TRIGGERS 里的TRIGGER_STATE 字段的状态修改为正常的状态.

5.完美解决此类问题

小伙伴们,如果你们有更好的解决方案,请给我留言哦.

quartz定时任务不执行quartz定时任务不执行 Fatman-byte 发布了27 篇原创文章 · 获赞 5 · 访问量 644 私信 关注
上一篇:quartz Cron表达式


下一篇:杂谈篇之我是怎么读源码的,授之以渔