Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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
Spring 在Quartz JDBC支持的集群的每个节点上运行作业_Spring_Cluster Computing_Quartz Scheduler - Fatal编程技术网

Spring 在Quartz JDBC支持的集群的每个节点上运行作业

Spring 在Quartz JDBC支持的集群的每个节点上运行作业,spring,cluster-computing,quartz-scheduler,Spring,Cluster Computing,Quartz Scheduler,我有一个由两个运行SpringWeb应用程序的Tomcat节点组成的集群。我配置了一个RAMJobStore,并切换到LocalDataSourceJobStore,以提供集群,使每个作业最多在一个节点上运行。大多数作业(包括一些新作业)都在数据库上操作,并从该功能中获益 不幸的是,我有一项工作是对RAM中的数据进行操作,并且没有同步设置。我能看到的最简单的解决方案是,一个作业只需在所有节点上运行,而无需协调,就像它在RAMJobStore中所做的那样 是否有方法将作业配置为在LocalData

我有一个由两个运行SpringWeb应用程序的Tomcat节点组成的集群。我配置了一个
RAMJobStore
,并切换到
LocalDataSourceJobStore
,以提供集群,使每个作业最多在一个节点上运行。大多数作业(包括一些新作业)都在数据库上操作,并从该功能中获益

不幸的是,我有一项工作是对RAM中的数据进行操作,并且没有同步设置。我能看到的最简单的解决方案是,一个作业只需在所有节点上运行,而无需协调,就像它在
RAMJobStore
中所做的那样

是否有方法将作业配置为在LocalDataSourceJobStore下的所有节点上运行?


精确的定时并不重要,但作业必须每30分钟在每个节点上运行一次

我没有尝试过这一点,但我认为您可以配置两个调度程序,一个用于集群作业,另一个用于RAM作业存储。如果使用spring,那么您可以这样配置

对于集群存储

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="configLocation" value="classpath:quartz.properties" />
    ...... configure your clustered triggers here 
</bean> 

...... 在此处配置集群触发器
然后为RAM存储设置另一个具有不同quartz.properties文件的调度程序

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="configLocation" value="classpath:quartz_ram.properties" />
    ...... configure your RAM store triggers here 
</bean> 

...... 在此处配置RAM存储触发器

试过了。似乎存在一些通过静态或线程局部变量共享的状态,您会得到错误。