quartz thread设置引起的问题
有个quartz问题让我郁闷了几天,系统原来一直运行的很好,但有一套测试环境本来设置即时触发的SimpleTrigger,总是没有被触发,或者是十几分钟后才触发。
?
找了所有资料都搞不明白,三天两夜,那帮业务催的紧啊。
?
后来给Trigger加了个监听器,发现Trigger被触发了但总是misfire。而且发现nextFireTime总被设置比当前服务器早1分钟。
?
因为我们是集群,开始怀疑是应用服务器时间不一致导致了,后来调整一致还是这样。
?
?
为啥nextFireTime总是被设置比当前时间早呢?
?
带着这个问题看了quartz源代码,看来e文注释,getNextFireTime给资源有关,比如thread。
?
于是去看quartz的配置,发现org.quartz.threadPool.threadCount被设置为1,让部署的人把配置改为15,然后重启服务器后,这个问题就不再有了。
?
本来项目中quartz.properies文件一直打到war包里,某个开发人员不知道怎么回事把这个文件移出来了。部署的人也不知道是什么,就设置为1.
?
?