我有几台网络服务器,需要他们使用Quartz。Quartz的集群特性是理想的,但它要求服务器时钟完全同步。他们对此有一个非常可怕的警告:
永远不要在单独的机器上运行集群,除非它们的时钟使用某种形式的时间同步服务(守护进程)进行同步,而时间同步服务(daemon)运行非常有规律(时钟必须在彼此之间的一秒钟内)。
我不能保证完全的时钟同步,所以我没有使用集群特性,而是考虑有一个Quartz实例(为故障备用)。拥有一个执行作业的实例并不是问题,但我仍然需要所有的web服务器才能安排作业。
我可以直接从web服务器将作业添加到JDBCJobStore中,它们会被(非集群) Quartz服务器捕获吗?我将通过在web服务器中创建调度实例来添加作业来做到这一点。这些实例将永远不会启动,只用于访问JobStore。
发布于 2009-11-23 07:02:30
编写了一个测试程序,该程序使用与"real“调度器相同的JobStore创建一个”非集群“Quartz调度程序,并调度作业。几秒钟后,这些作业确实会被执行,所以看起来很有效。
更新:i交叉把这个问题发到石英论坛和得到的答案是这应该是可行的上.在相关问题中,他们说
通过以下方法,可以通过另一个进程将作业插入该数据库: 1-使用来自另一个过程的石英的rmi特性,并使用石英API。 2-在另一个进程(如webapp)内实例化调度程序,也将其指向同一个数据库,但不启动()调度程序所安装的调度程序,并使用石英api来调度作业。
https://stackoverflow.com/questions/1777478
复制相似问题