Quartz Scheduler:在每个集群节点上触发一些作业,每个集群只触发一些作业

MDS*_*MDS 7 java spring cluster-computing quartz-scheduler job-scheduling

我在集群环境中使用Quartz Scheduler作为Spring bean.

我有一些使用@NotConcurrent注释的作业,它们每个集群运行一次(即仅在一个节点中运行,仅在一个线程中).

现在我需要在集群的每个节点上运行一个作业.我删除了@NotConcurrent注释,但它只在一台机器上的每个线程上运行.它不会在其他节点上被触发.

我应该用什么来诠释这份工作?

示例:Job1 NotConcurrent annotated安排在午夜=>它每隔午夜只在一台机器上触发.Job2注释安排在午夜=>它每隔午夜在每台机器上启动.

谢谢.

Jan*_*vec 7

AFAIK Quartz作业总是在Quartz选择的单个节点上执行.@NonConcurrent注释仅阻止Quartz在特定节点上同时执行相同的作业.

换句话说,您无法使Quartz同时在多个节点上执行作业.它总是选择一个节点来执行作业.

要实现您描述的内容,您可能需要多个作业(使用相同的作业类且没有关联的触发器).然后,您需要实现某种协调器作业,该作业将通过JMX或RMI远程连接到各个节点并手动触发作业.

您可能需要查看我们的产品QuartzDesk(www.quartzdesk.com),该产品提供的Web服务提供单端点,您可以通过该端点连接到各个Quartz调度程序实例,例如,触发它们上的作业.

  • 谢谢.知道这个限制导致我使用带有cron表达式的spring @Scheduled注释来在所有集群节点上启动该作业.这种混合方法运作良好. (3认同)