【问题标题】:Are JobListeners global in a Quartz cluster?JobListeners 在 Quartz 集群中是全局的吗?
【发布时间】:2012-09-19 19:30:13
【问题描述】:

我在 Java EE 应用程序的上下文中运行 Quartz 的集群实例。 Java EE 应用程序中的一个节点(随机选择)将触发一系列 Quartz 作业以立即执行(如post 中所述);在触发每个作业之前,与该作业关联的 JobListener 将添加到调度程序的 ListenerManager。

如果我理解 Quartz 的内部工作正常,那么实际执行每个作业的节点将是可用节点中的selected at random。如果是这种情况,如果侦听器是在与执行作业的节点不同的节点中创建的,如何调用侦听器的方法?我可以假设 ListenerManager 中的侦听器列表是全局的并且对于集群中的所有节点都相同吗?还是每个节点都有自己的 ListManager 和自己的侦听器?

【问题讨论】:

  • 你有没有得到这个问题的答案?
  • @ccleve 没有,最后我们没有在集群中使用 Quartz
  • 您是否使用 Quartz 以外的其他工具实现了集群解决方案?
  • @ccleve 不,我们根本没有使用集群。我们的实验表明 Quartz 中的侦听器支持集群

标签: java jakarta-ee listener cluster-computing quartz-scheduler


【解决方案1】:

我在free, online book 中找到了一些更有用的信息:

在集群环境中使用全局监听器

您仍然可以在集群中使用作业和触发侦听器 环境。当你试图理解时,唯一的困惑就出现了 哪个 Scheduler 实例会收到回调方法。

记住这一点的最简单方法是通知侦听器 在执行作业或触发器的调度程序实例中。 因为作业和触发器仅在单个节点上执行,所以 在该节点上通知侦听器。

【讨论】:

    【解决方案2】:

    根据 Quartz 文档:

    侦听器在运行时向调度程序注册,并且是 不与作业和触发器一起存储在 JobStore 中。这是 因为侦听器通常是与您的集成点 应用。因此,每次您的应用程序运行时,监听器 需要重新注册调度器。

    参考http://quartz-scheduler.org/files/documentation/Quartz-2.1.x-Documentation.pdf

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-09
      • 2019-03-06
      • 2012-09-19
      • 1970-01-01
      • 2017-11-28
      • 2015-08-21
      相关资源
      最近更新 更多