Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 群集石英调度器配置_Java_Quartz Scheduler - Fatal编程技术网

Java 群集石英调度器配置

Java 群集石英调度器配置,java,quartz-scheduler,Java,Quartz Scheduler,我正在开发一个应用程序,它使用Quartz来调度作业。要计划的作业是通过读取属性文件以编程方式创建的。我的问题是:如果我有一个由几个节点组成的集群,哪些节点应该以编程方式创建计划?只有一个?或者是全部?您是否尝试过在所有设备上创建它们?我想你会因为名字重复而产生一些冲突。 因此,我认为其中一个成员应该在启动期间创建时间表。我在一个web应用程序中使用了quartz,其中用户可以创建执行某些任务的quartz作业 我们在该应用程序上没有任何问题,只要每个职位的职位名称不同。您也可以有不同的组名,如

我正在开发一个应用程序,它使用Quartz来调度作业。要计划的作业是通过读取属性文件以编程方式创建的。我的问题是:如果我有一个由几个节点组成的集群,哪些节点应该以编程方式创建计划?只有一个?或者是全部?

您是否尝试过在所有设备上创建它们?我想你会因为名字重复而产生一些冲突。
因此,我认为其中一个成员应该在启动期间创建时间表。

我在一个web应用程序中使用了quartz,其中用户可以创建执行某些任务的quartz作业

我们在该应用程序上没有任何问题,只要每个职位的职位名称不同。您也可以有不同的组名,如果我没记错的话,jobgroup+jobname组合会形成一个作业键

无论如何,我们在创建一个运行来自不同节点的作业时没有遇到任何问题,但是quartz当时(大约6个月前,我不认为这已经改变,但我不确定)没有提供停止集群中作业的可能性,它只能停止执行stop命令的节点上的作业


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

如果集群的系统调度作业是在您所说的属性中预定义的,则应该只有一个系统调度作业。如果所有的系统都这样做了,那么您将不必要地重新创建作业,如果每个服务器都创建或删除相同的作业和触发器,那么可能会使它们处于一种奇怪的状态

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

您可以制作一个单独的应用程序,用于调度作业,并且只运行一次

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