gpt4 book ai didi

java - quartz 调度器 : Trigger some jobs on every cluster node and some only once per cluster

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:22:51 25 4
gpt4 key购买 nike

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

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

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

我应该用什么来注释作业?

示例:Job1 NotConcurrent annotated is scheduled at midnight => 它每个午夜只在一台机器上触发。 Job2 注释为午夜安排 => 它在每个午夜在每台机器上触发。

谢谢。

最佳答案

AFAIK Quartz 作业总是在 Quartz 选取的单个节点上执行。 @NonConcurrent 注解只会阻止 Quartz 在特定节点上并发执行相同的作业。

换句话说,你不能让 Quartz 在多个节点上同时执行一个作业。它总是选择一个节点来执行作业。

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

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

关于java - quartz 调度器 : Trigger some jobs on every cluster node and some only once per cluster,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23665688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com