这两天在用Quartz的定时任务,在本地写好了开发版本,设置的cron是每分钟一次。
后续发现该任务只会在服务重启时运行一次,然后就会在临近下一次任务调用时,trigger的状态会变成
Error
正常状态是WAITING,等待被调用。这个表名是qrtz_triggers。属于记录任务状态第一个表,只有在持久化到本地时才会有这个表。
原因是有两个服务调用的同一个库
我的本地有任务A,B两个定时任务,但是我的线上环境只有A一个任务。我的猜测是线上在读取数据的时候发现了B的任务,扫描程序没有发现该任务的执行方法体,然后抛出异常了。
这个问题十分隐蔽,我是通过切换数据库发现的,如果出现了此种问题,请保证服务唯一,好进行排查。因为这个东西会在其他服务报错,本地是发现不了蛛丝马迹的!