quartz 定时任务不运行问题
问题描述:通过注解@Scheduled进行定时任务配置,同时配置20个corn表达式相同的任务,定时任务中执行推送数据的方法,tomcat运行后日志显示只运行了一次。
//每10秒执行一次
@Scheduled(cron = "0/10 * * * * ?")
原因排查:发现是定时任务执行的方法中数据量过大导致方法执行过久(一个小时甚至更久),quartz默认情况下是单线程执行所有定时任务的,并且若当前任务处于执行中,当执行时间超过定时任务的间隔时间,后续定时任务会等待前一个任务执行完成,才会再次触发,故造成了日志中没有报错,并且没有定时任务执行日志情况的现象。
解决方案:笔者直接修改sql,将此条数据过大的数据过滤,重启后发现定时任务正常执行。