2013-01-10 187 views
0

我正在研究使用Quartz来调度作业的应用程序。要安排的作业是通过读取属性文件以编程方式创建的。我的问题是:如果我有几个节点的集群这些应该创建时间表编程?其中只有一个?或者,也许所有?集群石英调度程序配置

回答

1

我在一个网络应用程序中使用石英,其中用户可以创建执行特定任务的石英工作。

我们对该应用程序没有任何问题,前提是至少每个作业的作业名称不同。你也可以有不同的组名,如果我没记错的话,jobgroup + jobname组合形成一个工作键。

无论如何,我们在创建一个来自不同节点的作业时没有问题,但当时的石英(大约6个月前,我不相信这已经改变,但我不确定)没有提供停止集群中的作业,它只能停止执行停止命令的节点上的作业。

如果您只是想在应用程序启动时创建固定数量的作业,则最好将该作业委托给其中一个节点,因为将从每个节点的相同属性文件读取作业名称/组,并且冲突将会出现。

0

你有没有试过在它们上面创建它们?我想你会因为重复的名字而发生冲突。 所以我认为其中一个成员应该在启动过程中创建时间表。

0

如果集群中的预定义属性像您说的那样,那么您应该只有一个系统为该集群安排作业。如果所有系统都这样做了,那么如果每台服务器都创建或删除了相同的作业和触发器,则可能会不必要地重新创建作业,并且可能会将其置于奇怪的状态。

您只需将作业的属性部署到一台服务器,然后只有一台服务器会尝试创建它们。

您可以制作一个单独的应用程序,其目的是安排作业并只运行一次。

如果这些是Web服务器,您可以制作一个简单安全的REST API来触发调度过程。然后,您可以编写一个自动脚本来访问该API,并启动作为部署的一部分或任何其他需要的时间安排作业。如果负载平衡器后面有多个服务器,则应该只有一台服务器,并计划将石英保存到数据库支持的作业库的作业。群集中的其他节点将在下一次从数据库更新时接收它们。