【问题标题】:Use same quartz instance both clustered and non clustered way for same set of Quartz table对同一组 Quartz 表使用相同的石英实例集群和非集群方式
【发布时间】:2016-04-11 06:53:38
【问题描述】:

我有一个要求,我的一些石英作业应该以集群方式运行(三个节点中只有一个节点应该运行该作业)和一些作业以非集群方式运行(3 个节点中的所有 3 个节点都应该运行该作业)。

现在我的问题是,我可以在数据源中使用同一组表来满足这两个要求吗?

为了达到同样的目的,我可以做些什么。

  1. 2 个quartz.properties 一个用于集群实例,一个用于非集群实例。
  2. 集群的两个实例都将在应用程序启动时启动。
  3. 所以非集群调度器下配置的作业会以调度器名称NON_CLST_SCHE保存在jobs表中,不同调度器名称下的同一张表中。

这是使用石英的正确方法吗?我们是否面临任何数据损坏问题?

根据石英文档@http://www.quartz-scheduler.org/documentation/quartz-2.x/tutorials/tutorial-lesson-11.html 它说 切勿针对运行任何其他实例的同一组表启动非集群实例。您可能会遇到严重的数据损坏,并且肯定会遇到不稳定的行为。

现在,如果上述解释属实,我的要求的出路是什么。

非常感谢任何帮助,在此先感谢!

【问题讨论】:

  • 嗨,这种方法对你有用吗?您能否分享一下属性的 sn-p 以及您是如何触发和清除 Jobs 的?

标签: quartz-scheduler job-scheduling


【解决方案1】:

我认为您的方法很好(假设访问同一数据库的所有非集群调度程序都具有唯一的调度程序名称)。

在我看来,警告是指您有多个具有相同调度程序名称的非集群实例针对同一数据库运行的情况。例如。如果作业(触发器,...)的关联 SchedulerName 与调度程序的匹配,则调度程序只能从 JDBC-Jobstore 中查看作业、触发器等。

【讨论】:

  • 好的。根据您的评论在我看来,警告是指您有多个非集群实例的情况.....它指的是未处于集群模式但仍访问同一组表的服务器节点。我的理解正确吗?
  • 是的。我对此非常确定,因为我在生产环境中使用此设置(自 2 年以来,每天大约 100 个作业)。 IE。我们有多个非集群调度程序,具有不同的调度程序名称,它们针对同一组表运行。因此每个调度器都有其唯一的调度器名称,它们可以在非集群模式下运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-07
  • 1970-01-01
相关资源
最近更新 更多