java - 在多台机器上运行 tomcat 时的 Quartz 集群设置

标签 java quartz-scheduler

我有一个网络应用程序,它将在两台不同的机器上运行。从网络应用程序中,可以“订购”由quartz 在特定时间执行的作业。 quartz 正在 web 应用程序内运行。因此, quartz 在两台机器上运行。 我正在使用 JDBC 数据存储来保存作业、触发器等。

但是,我们的想法是,只有一台机器将运行作业,而另一台机器将仅使用quartz来调度作业。因此,调度程序只会在其中一台机器上启动(scheduler.start())。

在文档中它说

Never run clustering on separate machines, unless their clocks are synchronized using some form of time-sync service (daemon) that runs very regularly (the clocks must be within a second of each other). See http://www.boulder.nist.gov/timefreq/service/its.htm if you are unfamiliar with how to do this.

Never start (scheduler.start()) a non-clustered instance against the same set of database tables that any other instance is running (start()ed) against. You may get serious data corruption, and will definitely experience erratic behavior.

而且我不确定运行我的 web 应用程序的两台计算机的时钟是否同步。

我的问题是这样的:当只有一个quartz实例启动并运行作业而另一个实例仅用于调度第一个实例执行的作业时,我是否仍应在此设置中以集群模式运行quartz。

最佳答案

仅在一个节点上启动调度程序并在另一台计算机上远程访问它怎么样?您可以使用 RMI/JMX 来安排作业。或者您可以使用RemoteScheduler适配器。

基本上,您没有两个集群调度程序(其中一个正在工作,另一个仅访问共享数据库),而是只有一个调度程序(服务器),您可以从另一台机器访问它,通过 API 调度和监控作业。

关于java - 在多台机器上运行 tomcat 时的 Quartz 集群设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10189310/

相关文章:

java - 比较Hadoop MapReduce中的两个文件

mysql - 测试环境的 Quartz 调度程序不工作

quartz-scheduler - quartz : Show trigger interval/schedule details

java - 尝试使用向导导出 Eclipse 产品时出错

java - 结束 do-while 循环

java - Java 中二叉树/图的深度优先搜索

spring - quartz 线程数

java - nextFireTime 和开始时间不一致

java - Oraclequartz selectWithLockSQL值?

java - 为什么我不能只导入所有内容?