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

时间:2013-02-28 17:52:53

标签: spring cluster-computing quartz-scheduler

我有一个运行Spring Web应用程序的两个Tomcat节点的集群。我使用RAMJobStore配置Quartz并切换到LocalDataSourceJobStore以提供群集,以便每个作业最多在一个节点上运行。包括一些新工作在内的大多数工作都在数据库上运行,并受益于此功能。

Unfortunatley我有一项工作是对RAM中的数据进行操作,并且没有设置同步。我能看到的最简单的解决方案就是让一个作业在没有协调的情况下在所有节点上运行,就像RAMJobStore一样。

有没有办法配置作业在LocalDataSourceJobStore下的所有节点上运行?

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

1 个答案:

答案 0 :(得分:0)

我没试过这个,但我认为你可以配置2个调度程序,一个用于集群作业,一个用于RAM作业存储。如果使用弹簧,那么你会这样配置。

用于集群商店

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

然后为RAM Store设置另一个具有不同quartz.properties文件的调度程序。

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