quartz定时任务执行一段时间不执行的原因
数据库表QRTZ_TRIGGERS 里的
TRIGGER_STATE
字段的值自动修改为ERROR
了 ,quartz定时任务是不扫描这种ERROR
情况.之所以出现
ERROR
原因在于job里有bug,导致quartz自动将状态改变,然后quartz不执行ERROR
状态的job.
1.查找原因
原因如下图:( 查找原因的方法是 将
ERROR
改为正常状态时,会打印错误 )TRIGGER_STATE的状态有:
WAITING:等待 PAUSED:暂停 ACQUIRED:正常执行 BLOCKED:阻塞 ERROR:错误
2.数据库的现象
如下图:
其中TRIGGER_STATE
状态的字段为ERROR
,可以将其改为上面的WAITING:等待
或者ACQUIRED:正常执行
然后重启项目,这时在控制台可能会有一图所示类似的错误日志.
3.TRIGGER_STATE
字段改变后不会自动改正,并且quartz定时任务不扫描ERROR
状态
因此,quartz定时任务可能执行几次后遇到job里的bug就自动修改了状态,那么这个quartz定时任务就不再执行了.
4.解决方案
解决quartz定时任务job里的bug,然后将数据库
QRTZ_TRIGGERS
里的TRIGGER_STATE
字段的状态修改为正常的状态.
5.完美解决此类问题
Fatman-byte 发布了27 篇原创文章 · 获赞 5 · 访问量 644 私信 关注小伙伴们,如果你们有更好的解决方案,请给我留言哦.