我有一个构建石块的工作,每天早上发送电子邮件。这项工作每天早上开了三次,而不是一次。我们有一个托管的Blackboard实例,我被告知运行在三台虚拟服务器上。我猜这是造成这个问题的原因,因为以前的构建块在单个服务器安装上工作正常。石英作业多次触发
有没有人有石英的经验,或可以建议如何防止工作多次发射?
感谢,
我有一个构建石块的工作,每天早上发送电子邮件。这项工作每天早上开了三次,而不是一次。我们有一个托管的Blackboard实例,我被告知运行在三台虚拟服务器上。我猜这是造成这个问题的原因,因为以前的构建块在单个服务器安装上工作正常。石英作业多次触发
有没有人有石英的经验,或可以建议如何防止工作多次发射?
感谢,
你没有详细说明如何你的Quartz实例(S)被实例化,并开始,但要注意,如果你运行针对同一个作业存储数据库的多个实例石英会导致未定义行为同时,除非启用集群(请参阅http://www.quartz-scheduler.org/docs/configuration/ConfigJDBCJobStoreClustering.html)。
我想我对此有点迟了,但我们的应用程序也有类似的情况。我们有4个服务器运行作业,其中一些可以同时在多个服务器上运行,有些应该只运行一次。正如Will的回应所言,您可以查看Quartz的群集功能。
我们的方法有点不同,因为在我们切换到Quartz之前,我们有一个本土解决方案。我们的工作利用数据库表来存储cron触发器和其他作业信息,然后“锁定”作业条目,以便其他服务器不能执行它。这使得作业不会在服务器上多次运行,并且迄今为止相当有效。
希望有所帮助。