石英调度器聚类

时间:2012-06-11 16:01:26

标签: quartz-scheduler

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

我已经制作了一个应用程序,并使用quartz api进行聚类。我已经在db中创建了所有表。

现在我需要在节点或jst节点1中运行模块,这样当节点1关闭时,应用程序会自动在节点2中启动。

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

Quartz.properties:

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

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

1 个答案:

答案 0 :(得分:2)

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

特别是:

  

群集当前仅适用于JDBC-Jobstore(JobStoreTX或JobStoreCMT),实际上是通过让群集的每个节点共享同一个数据库来工作。

     

负载平衡自动发生,群集中的每个节点都尽可能快地触发作业。当触发器的触发时间发生时,获取它的第一个节点(通过锁定它)是将触发它的节点。

你应该启动所有节点,最快将触发工作,其他人将知道它。