2

我有一个 2 节点 HA 服务器。节点 1 处于活动状态,节点 2 处于备用状态。

我做了一个应用程序并使用石英 api 进行聚类。我已经在数据库中创建了所有表。

现在我是否需要在两个节点或 jst 节点 1 中运行该模块,以便当节点 1 关闭时,应用程序会自动在节点 2 中启动。

在两个节点中运行模块时,触发器和作业名称应该相同还是不同?

石英属性:

org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool

org.quartz.threadPool.threadCount = 10

org.quartz.threadPool.threadPriority = 5

org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true

-- 使用 RAMJobStore

-- 如果使用 RAMJobStore,请务必注释掉

-- org.quartz.jobStore.tablePrefix, org.quartz.jobStore.driverDelegateClass, org.quartz.jobStore.dataSource

-org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore

-- 使用 JobStoreTX

-- 确保首先运行适当的脚本(在 docs/dbTables 下)来创建数据库/表

org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX

-- 使用 DriverDelegate

org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate

--新的集群配置

org.quartz.jobStore.isClustered = true

org.quartz.jobStore.clusterCheckinInterval = 20000

org.quartz.scheduler.instanceId = AUTO

org.quartz.scheduler.instanceId = AUTO

org.quartz.scheduler.instanceName = MyClusteredScheduler

-- 使用表前缀配置 JDBCJobStore

org.quartz.jobStore.tablePrefix = QRTZ_

-- 使用数据源

org.quartz.jobStore.dataSource = qzDS

-- 定义要使用的数据源

org.quartz.dataSource.qzDS.driver = oracle.jdbc.driver.OracleDriver

org.quartz.dataSource.qzDS.URL = jdbc:oracle:thin:@10.172.16.147:1521:emadb0

org.quartz.dataSource.qzDS.user = BLuser

org.quartz.dataSource.qzDS.password = BLuser

org.quartz.dataSource.qzDS.maxConnections = 30

----------------------

4

1 回答 1

2

根据:http: //quartz-scheduler.org/documentation/quartz-2.x/configuration/ConfigJDBCJobStoreClustering

尤其是 :

集群目前仅适用于 JDBC-Jobstore(JobStoreTX 或 JobStoreCMT),并且本质上是通过让集群的每个节点共享相同的数据库来工作的。

负载平衡会自动发生,集群的每个节点都会尽快触发作业。当触发器的触发时间发生时,获取它的第一个节点(通过对其加锁)就是将触发它的节点。

您应该启动所有节点,最快的将触发作业,其他人会知道它。

于 2012-06-11T16:12:21.640 回答