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

在集群环境中每天运行Quartz调度程序

文凯康
2023-03-14

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

还需要一些关于如何在Linux机器上部署这个Java应用程序的指导(像Cron作业或其他一些方式)。要求是,这个应用程序应该在服务器系统启动时启动,并且将永远运行,直到服务器关闭。当服务器再次启动时,此作业也应自动启动。

共有1个答案

马哲
2023-03-14
The requirement is to run a java application periodically (say everyday for an example) to send out email/SMS notification to customers. 

这可以通过Quartz创建一个作业和相应的触发器来实现,该触发器将在特定时间触发。

The environment is cluster / high availability where more than one node will be active at the same time. This application is to be deployed on all the nodes but only one should start and run even though all of them are configured to run. How to achieve this

Quartz调度器支持数据库集群机制,如果两个或多个调度器名称相同但实例id不同,则它们将形成集群,但需要注意的是所有应用节点都指向同一个数据库。

Also need some guidance on how to deploy this java application on Linux machine (like Cron job or some other way). 

当Quartz执行调度工作时,不需要创建linux cron作业。

When the server starts again, this job should also start automatically.

Quartz有处理未触发触发器的规定,因此如果应用程序关闭,Quartz将扫描未触发的触发器在应用程序启动时并调度它们。

为了使上面的东西工作,您应该在quartz中使用JDBC Jobstore,而不是RAMJobStore

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

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

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

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

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

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