簡體   English   中英

在Quartz JDBC支持的集群的每個節點上運行作業

[英]Run a job on every node of a Quartz JDBC backed cluster

我有一個由兩個Tomcat節點組成的集群,它們運行一個Spring Web應用程序。 我為Quartz配置了RAMJobStore並切換到LocalDataSourceJobStore來提供集群,這樣每個作業最多只能在一個節點上運行。 大多數作業(包括一些新作業)都在數據庫上運行,並從此功能中受益。

不幸的是,我有一項作業要對RAM中的數據進行操作,並且沒有設置同步。 我能看到的最簡單的解決方案是,就像在RAMJobStore所做的那樣,一項作業無需協調就可以在所有節點上簡單運行。

有沒有一種方法可以配置作業以在LocalDataSourceJobStore下的所有節點上運行?

准確的時間並不重要,但是作業必須每30分鍾在每個節點上運行一次

我還沒有嘗試過,但是我認為您可以配置2個Scheduler,一個用於群集作業,另一個用於RAM作業存儲。 如果使用spring,則可以這樣配置。

用於集群商店

<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> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM