当前位置: 首页 > 知识库问答 >
问题:

集群环境中的Quartz调度器作业发布

葛航
2023-03-14

我有一个有两个节点的集群,它连接到同一个数据库,还有一个调度作业,由Quartz调度程序每10分钟启动一次。在quartz.propertiesorg.quartz.jobstore.isclustered=true中设置。

我感兴趣的是,调度程序是否会为同一节点发出作业,直到每隔10分钟可到达该节点为止,或者它使用某种算法来确定哪个节点将执行该作业。

我在文档(http://www.quartz-scheduler.org/documentation/quartz-2.x/configuration/configJDBCJobStoreClustering.html)中没有找到任何关于它的信息。

谢谢你。

共有1个答案

龚奇逸
2023-03-14

我在quartz教程中发现:

每次激发只有一个节点将激发作业。我的意思是,如果作业有一个重复触发器,告诉它每10秒触发一次,那么在12:00:00正好有一个节点运行作业,在12:00:10正好有一个节点运行作业,等等。每次不一定都是同一个节点--运行它的节点或多或少是随机的。负载平衡机制对于繁忙的调度器(大量触发器)几乎是随机的,但对于非繁忙的调度器(例如,一个或两个触发器),它倾向于使用刚刚处于活动状态的同一节点。

http://www.quartz-scheduler.org/documentation/quartz-2.x/tutorials/tutorial-lesson-11.html

 类似资料:
  • 我正在使用 这是可行的,但当我使用集群环境时,两个线程正在为同一作业运行。 我使用的是注释而不是属性文件。我只想运行一个线程。有人能帮忙吗。如何配置? 我的代码几乎像:http://k2java.blogspot.com/2011/04/quartz.html

  • 我的we应用程序A将扫描业务相关的数据库表,并在启动期间和之后每10分钟安排石英作业。如果我在两个不同的tomcat实例上部署两个A应用程序,那么将有两组通过Quartz调度的重复作业。 我该如何解决这个问题?我是否需要将调度作业的部分代码提取到单独的应用程序中,并确保只部署了1个实例,从而只调度了1组作业?但是问题变成了--如果这个实例失败了怎么办?在这种情况下,如何实现故障转移?

  • 相关:Quartz群集-服务器启动时触发器重复 null 这是很好的,但我担心的是,当两个实例完全同时启动时,可能会出现竞争情况。因为在这段代码周围没有全局锁,集群中的所有节点都将尊重它,如果两个实例同时联机,我可能会得到重复的作业或触发器,这就违背了这段代码的要点。 在集群环境中是否有自动定义Quartz作业和触发器的最佳实践?还是我需要自己设置锁?

  • 我有在集群中运行,并且我得到定期运行的作业。该作业在一台计算机中启动,其他计算机将保持到下一个执行时间。 我现在想要的是,如果前一次调用还没有完成,则延迟作业调用。例如: 即使这样也是可以接受的: 我使用了类似触发器的cron表达式,它每10分钟触发一次()。

  • 要求是定期运行一个Java应用程序(例如每天),向客户发送电子邮件/短信通知。环境是集群/高可用性,其中多个节点将同时处于活动状态。该应用程序将部署在所有节点上,但只有一个节点应该启动并运行,即使所有节点都配置为运行。如何实现这一点。在Java应用中,使用了石英调度器。 还需要一些关于如何在Linux机器上部署这个Java应用程序的指导(像Cron作业或其他一些方式)。要求是,这个应用程序应该在服

  • 我有一个使用Quartz1.6.6的Java应用程序。它被部署到Weblogic上,Weblogic的体系结构包括两个应用服务器。 令人困惑的是,我有另一个Java应用程序,其中包含了Quartz调度,它似乎运行得非常愉快。另一个应用程序有一个相同的机制,每分钟触发一个触发器,从日志中我可以看到该作业每60秒只运行一次。 昨天下午作业已运行的次数示例: 15:10:46,984 15:10:49,