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

标签 java spring cluster-computing quartz-scheduler job-scheduling

我在集群环境中使用 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/

相关文章:

java - 如何从客户端应用程序调用 weblogic 服务器中的集群 EJB 应用程序

java - 当 queryParameter 没有值时 getQueryString 返回空字符串

java - Spring Webflow 流式处理

java - 遍历AccessibilityNodeInfo时Android辅助功能服务中的无限递归

java - 用于不同 API 的同一 DTO 上的 Spring Boot 请求主体验证

java - 使用@Bean Autowiring 而不使用@Autowired的方法

testing - 使用 Hudson 设置 JBoss 集群?

cluster-computing - 提交Condor作业期间的代码更新

java - 我需要 java 中的全局键盘监听器 for Mac

java - 尝试使用自定义 JsonSerializer 时出现 Stackoverflow 异常 (Jackson)