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

机群环境中的Quartz调度器

查宜修
2023-03-14

我正在使用

SchedulerFactory schedulerFactory = new StdSchedulerFactory();
scheduler = schedulerFactory.getScheduler();
scheduler.start();
Trigger asapTrigger = getAsapTrigger();
JobDetail asapJob = getAsapJobDetails();
scheduler.scheduleJob(asapJob, asapTrigger);

这是可行的,但当我使用集群环境时,两个线程正在为同一作业运行。

我使用的是注释而不是属性文件。我只想运行一个线程。有人能帮忙吗。如何配置?

我的代码几乎像:http://k2java.blogspot.com/2011/04/quartz.html

共有1个答案

颜高格
2023-03-14

您必须将Quartz配置为在集群环境中运行。集群目前仅与JDBC jobstore一起工作,并且通过使集群的每个节点共享相同的数据库来工作。

  • 如果有多个Quartz实例使用同一组数据库表,则将org.Quartz.jobstore.isClustered属性设置为true。此属性用于打开群集功能
  • 设置org.quartz.jobstore.clusterCheckinInterval属性(毫秒),该属性是此实例与群集的其他实例签入的频率。
  • 将org.quartz.scheduler.instanceID设置为AUTO,以便群集中的每个节点都有唯一的instanceID。

请注意,集群中的每个实例都应该使用quartz.properties文件的相同副本。此外,如果在不同的计算机上使用集群,则确保它们的时钟是同步的。

有关更多信息,请查看官方文档,其中包含群集调度程序的示例属性文件。

 类似资料:
  • 我有一个有两个节点的集群,它连接到同一个数据库,还有一个调度作业,由Quartz调度程序每10分钟启动一次。在quartz.properties中设置。 我感兴趣的是,调度程序是否会为同一节点发出作业,直到每隔10分钟可到达该节点为止,或者它使用某种算法来确定哪个节点将执行该作业。 我在文档(http://www.quartz-scheduler.org/documentation/quartz-

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

  • 我们的(Spring)应用程序包含几个,这些调度器在夜间活动,以更改/更新中的一些数据(来自 )。 这一切都运行良好,问题是我们的应用程序很快就会在运行。 防止< code >实例A和< code >实例B的< code >调度程序同时执行相同工作的最佳选项是什么? **UPDATE** 群集环境设置为。 每个节点都与自己的数据库实例通信。每个数据库实例将数据复制到其他实例。 DB-实例不是设置为

  • 问题内容: 我希望在我的应用程序中使用石英调度程序,因为我有一个集群环境,并且想保证每小时只能运行一个工作实例。我的问题是…我是否必须使用JDBC作业存储库或某种形式的作业数据“外部”存储库,以确保集群中只有一个实例在任何给定的时间运行该作业,或者对Quartz来说,还有更多的魔力我知道吗? 问题答案: 是的,您需要使用JDBC- JobStore或TerracottaJobStore来启用节点相

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

  • 我在WebSphere8.5.5上使用Quartz-2.2.3,在集群环境中,我有2个节点,每个节点上有3个JVM。 我正在应用程序启动时配置作业。 问题是作业在每个节点上配置一次,我希望它在两个节点上只配置一次,而不是每个节点上都配置一次。 我的配置如下: QuartzConfig.Properties: ApplicationContextListener: