在错误的节点上运行的集群中的quartz作业

时间:2012-12-04 05:46:40

标签: spring cluster-computing quartz-scheduler phase

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

我正在使用带有以下属性的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>

我定义了两个作业,一个用于alpha,另一个用于生产抛出阶段属性,而我遇到的问题是我为alpha阶段定义的作业在定义到生产的节点上运行,我该如何才能完成工作为alpha阶段定义的只在为alpha定义的机器上运行?

谢谢!

0 个答案:

没有答案