【发布时间】:2012-02-15 13:19:11
【问题描述】:
场景:我有两个不同的模块(比如 A 和 B)。 A 部署在两台不同的机器上(比如 A1 和 A2),B 部署在两台不同的机器上。(比如 B1 和 B2),并且安排了与 A 模块相关的作业,并且所需的 java 类仅与 A 一起使用(所以两者A1 和 A2 都有)。
我正在使用 spring 框架石英 bean,并在 tomcat 上启动模块后立即在所有机器上启动调度程序。
所有这些信息都存储在与石英相关的数据库表中。
最好的部分:如果 A1 出现故障,则在执行期间/之前,如果调度程序发现 A2 空闲,则作业将在 A2 上执行。所有必需的课程都在 A2 上,所以没问题。成功!
坏部分:如果 A1 出现故障,则在执行期间/之前执行,不幸的是,如果调度程序发现 B1 和 B2 空闲,则作业将在其中任何一个上执行,但由于 B1/B2 上不存在所需的类,我得到类未找到异常。失败!
查询:如何确保与模块 A 相关的作业仅在部署 A 的机器上运行,而不在部署 B 的机器上运行。
提前致谢!
【问题讨论】:
标签: cluster-computing quartz-scheduler scheduler