2013-02-28 97 views
2

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

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

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

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

回答

0

我没有试过,但我认为你可以配置2个调度器,一个用于您的集群作业和一个为您的RAM作业存储。如果使用弹簧,则可以像这样配置。

为群集店

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

,然后另设调度使用不同的quartz.properties文件的RAM存储。

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

试过了。似乎有一些状态通过静态或线程本地共享,你会得到错误。 – 2013-05-13 15:51:44

相关问题