【问题标题】:About using the same set of quartz tables for clustered and non-clustered schedulers关于为集群和非集群调度程序使用同一组石英表
【发布时间】:2012-10-03 07:04:57
【问题描述】:

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

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

【问题讨论】:

    标签: quartz-scheduler


    【解决方案1】:

    如果您启动两个不同名称的调度程序,您可以毫无问题地重复使用相同的表。作业、触发器和所有其他 Quartz 实体由包含调度程序名称的复合主键标识。这意味着集群调度器使用不同的记录子集,并且永远不会接触非集群的记录。

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

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

    【讨论】:

    • 这正是我所期望的澄清!
    • @TomaszNurkiewicz:这是否意味着如果我们有 2 个应用程序以不同的调度程序名称在非集群模式下运行不会导致任何冲突。有时回来,我们在石英 1.8.3 中使用这种场景.在预定的时间,任何随机调度程序用于接手工作,如果不是启动它的人就会失败
    • @Rips:我从未测试过这样的配置,但它应该像我描述的那样工作(我说的是 Quartz 2.x)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    • 2018-04-02
    • 1970-01-01
    • 2014-02-07
    相关资源
    最近更新 更多