Cluster computing 石英聚类问题

Cluster computing 石英聚类问题,cluster-computing,quartz-scheduler,scheduler,Cluster Computing,Quartz Scheduler,Scheduler,场景:我有两个不同的模块(比如A和B)。 A部署在两台不同的机器上(比如A1和A2),B部署在两台不同的机器上(比如B1和B2),与模块相关的作业被调度,所需的java类仅与A一起使用(因此A1和A2都有) 我正在使用SpringFrameworkQuartz bean,并在tomcat上启动模块后立即在所有机器上启动调度器 所有这些信息都存储在与quartz相关的数据库表中 最好的部分:在执行期间/之前,如果A1停止,幸运的是,如果调度程序发现A2空闲,作业将在A2上执行。所有必需的类都出现在

场景:我有两个不同的模块(比如A和B)。 A部署在两台不同的机器上(比如A1和A2),B部署在两台不同的机器上(比如B1和B2),与模块相关的作业被调度,所需的java类仅与A一起使用(因此A1和A2都有)

我正在使用SpringFrameworkQuartz bean,并在tomcat上启动模块后立即在所有机器上启动调度器

所有这些信息都存储在与quartz相关的数据库表中

最好的部分:在执行期间/之前,如果A1停止,幸运的是,如果调度程序发现A2空闲,作业将在A2上执行。所有必需的类都出现在A2上,因此没有问题。成功

糟糕的部分:在执行期间/之前,如果A1停止,不幸的是,如果调度程序发现B1和B2空闲,作业将在其中任何一个上执行,但是由于B1/B2上不存在所需的类,因此我得到了一个未找到类的异常。失败

查询:如何确保与模块A相关的作业仅在部署了A的机器上运行,而不在部署了B的机器上运行


提前谢谢

问题已解决:在quartz.properties文件中。按如下方式设置属性tablePrefix:

org.quartz.jobStore.tablePrefix=QRTZ\u 例如,对于模块A:A_QRTZ_,对于模块B:B_QRTZ_

在数据库中,删除所有以QRTZ_开头的表,并创建前缀为A_QRTZ_和B_QRTZ_的新表

因此,在上述场景下,模块A将只访问A_QRTZ_u表,模块将只访问B_QRTZ_u表

表的数量将增加,但最终,保存在这些表中的行/数据总数将与以前相同