2

u我有一个以 2+2 设置集群的应用程序,其中 2 台机器用于 alpha 产品阶段,另外两台用于真实客户。所有机器都在查看同一个数据库,我需要在午夜为每个组运行一份工作。两台 alpha 机器中的一台应该得到一份工作,另外两台应该得到另一份工作。

我正在使用 Spring 3.0.5 和 Quartz 1.8.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>

我定义了两个作业,一个用于 alpha,另一个用于生产抛出阶段属性,我遇到的问题是我为 alpha 阶段定义的作业在定义为生产的节点上运行,我怎样才能使作业定义为alpha 阶段仅在为 alpha 定义的机器上运行?

谢谢!

4

0 回答 0