关于为集群和非集群调度程序使用同一组石英表

Byj*_*edu 3 quartz-scheduler

我有必须在集群模式下运行的作业以及需要在每个节点中运行的作业.我还需要非集群作业是持久的,因此我创建了两个调度程序,一个在集群模式下运行,另一个在非集群模式下运行,两者都使用与作业存储相同的石英表集.这个设计有什么问题吗?我在Quartz Configuration参考中看到以下声明(http://quartz-scheduler.org/documentation/quartz-2.1.x/configuration/ConfigJDBCJobStoreClustering)

永远不要针对与任何其他实例正在运行(start()ed)的同一组数据库表启动(scheduler.start())非群集实例.您可能会遇到严重的数据损坏,并且肯定会遇到不稳定的行为但是没有解释,我不清楚它是否真的意味着.如果没有创建另一组石英表,还有其他选择.

Tom*_*icz 7

如果启动两个具有不同名称的调度程序,则可以重复使用相同的表而不会出现任何问题.作业,触发器和所有其他Quartz实体由复合主键标识,其中包括调度程序名称.这意味着群集调度程序使用不同的记录子集,并且永远不会触及非群集记录的记录.

另一种解决方案是使用不同的表集.Qurtz允许您在调度程序的基础上定义表前缀.

文档中的注释是关于具有相同调度程序名称的两个非群集应用程序使用相同数据库的情况.然后他们会严重打断对方,造成各种各样的问题.