2+2 セットアップでクラスタ化されたアプリケーションがあり、2 台のマシンがアルファ製品フェーズで使用され、残りの 2 台が実際の顧客に使用されます。すべてのマシンが同じデータベースを参照しているため、グループごとに深夜に実行するジョブが必要です。2 台のアルファ マシンのうちの 1 台がジョブを取得し、残りの 2 台が別のジョブを取得する必要があります。
次のプロパティを持つQuartz 1.8.5でSpring 3.0.5を使用しています
phase=alpha
quartz.job.name=MY_JOB_${phase}
<bean id="quartzPropertiesFactoryBean" class="com.liveperson.kwo.quartz.QuartzPropertiesFactory">
<constructor-arg value="AUTO"/>
<constructor-arg value="MY_CLUSTER"/>
<constructor-arg value="JobStoreTX"/>
<constructor-arg value="StdJDBCDelegate"/>
<constructor-arg value="true"/> //isClustered
<constructor-arg value="false"/> //useProperties
</bean>
<bean name="runJobBean" class="org.quartz.JobDetail">
<property name="name" value="${quartz.job.name}"/>
<property name="jobClass" value="CLASS1"/>
<property name="group" value="JOB-for-${quartz.job.name}"/>
<property name="jobDataMap">
<bean class="org.quartz.JobDataMap">
</bean>
</property>
</bean>
<bean name="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="quartzProperties" ref="quartzPropertiesFactoryBean"/>
<property name="dataSource" ref="mySqlConnectorBean"/>
<property name="overwriteExistingJobs" value="true"/>
<property name="jobDetails">
<list>
<ref bean="runJobBean"/>
</list>
</property>
<property name="triggers">
<list>
<ref bean="cronTriggerBean"/>
</list>
</property>
</bean>
私は 2 つのジョブを定義します。1 つはアルファ用、もう 1 つはプロダクション用でフェーズ プロパティをスローします。私が抱えている問題は、アルファ フェーズ用に定義したジョブがプロダクション用に定義されたノードで実行されることです。アルファ フェーズは、アルファ用に定義されたマシンでのみ実行されますか?
ありがとう!