2

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 つはプロダクション用でフェーズ プロパティをスローします。私が抱えている問題は、アルファ フェーズ用に定義したジョブがプロダクション用に定義されたノードで実行されることです。アルファ フェーズは、アルファ用に定義されたマシンでのみ実行されますか?

ありがとう!

4

0 に答える 0