Quartz - 2个应用程序上的重复作业,潜在的缓存问题

时间:2015-10-07 16:37:21

标签: quartz-scheduler

假设我有一个运行每小时的石英作业的tomcat webapp,我已经在运行此应用程序的一个实例的环境中进行了测试。没有重复运行,一切都如预期。

现在我将此应用程序移至具有两个并发运行环境的机器 - DEV和QA。它们运行在单独的JDK上,并具有单独的tomcat安装:/ myapp / tomcatD和/ myapp / tomcatQ。

ps -ef
...
admin     32089     1  2 10:14 pts/2    00:01:53 /myapp/java/jdk1.6.0_45_QA/jre/bin/java -Djava.util. ... 
admin     32296     1 99 11:44 pts/2    00:00:06 /myapp/java/jdk1.6.0_45_DEV/jre/bin/java -Djava. ...

首先,我将相同的build和scheduler.xml部署到DEV。它工作好几周。现在我部署到QA并注意到QA在其日志和DEV中重复运行我的预定作业。

我安排DEV的工作在:

运行
<value>30 0 * ? * *</value><!-- Every hour on :00 minute :30 second -->

QA的工作是:

<value>0 0 * ? * *</value><!-- Every hour on :00 minute -->

我观察每个日志在XX:00:00和XX:00:30有一次运行。

起初我认为他们只是记录对方的工作。但是,当我关闭DEV时,我注意到QA仍然运行该作业的第二个实例。我还尝试重新启动QA,但仍然没有启动,但也没有用 - 重复运行仍然发生。我还尝试将DEV的scheduler.xml替换为已注释掉所有作业的那个。没有成功。

有关Quartz的幕后情况如何?即使应用程序关闭或重新启动,也必须对这些作业进行一些缓存。

此外,这些应用程序之外是否有一些Quartz进程允许它们运行彼此的工作?

1 个答案:

答案 0 :(得分:0)

重新审视这个解决方案以防万一 - 石英没有问题,xml没什么好笑的。

唯一的问题是有人将webapp中的应用程序目录复制+粘贴到一个没人知道的文件夹中。 2个应用程序同时运行。

tomcat
  webapps
    myapp
    examples
      some_devious_person_copied_myapp_here and it was running alongside the other one, causing duplicate instances of the jobs