JobListeners是否在Quartz集群中是全局的?

时间:2012-09-27 22:40:23

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

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

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

2 个答案:

答案 0 :(得分:2)

根据Quartz文档:

  

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

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

希望这有帮助

答案 1 :(得分:1)

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

  

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

     

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

     

记住这一点的最简单方法是将通知监听器   在执行作业或触发器的Scheduler实例中。   由于作业和触发器仅在单个节点上执行,因此   在该节点上通知侦听器。