相关疑难解决方法(0)

Quartz Clustering - 在服务器启动时触发重复

在集群设置(使用JDBC数据存储)中使用Quartz 2.1.6和Spring 3.1时,我们遇到了一个问题.目前背景:

  • 作业和CRON触发器在spring配置文件中定义(见下文)
  • 在SchedulerFactoryBean中,overwriteExistingJobs属性设置为true,因此我们不会在每次部署时将新的作业定义添加到数据库中.
  • 但是,在群集中的每次部署之后,似乎每个节点都会重新创建触发器数据.例如,如果我们有2个指向1个作业和4个节点的触发器,则在集群部署之后,DB具有1个作业定义和4x2触发器.每次重新部署都会增加4x2触发器.

这种行为是否正常?如果是:我们如何告诉Quartz不要在每次部署时重新创建触发器数据?(或覆盖该数据,与Jobs一样)

<bean name="myJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
    <property name="jobClass" value="com.etc.MyJob" />
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"
    p:waitForJobsToCompleteOnShutdown="false" lazy-init="false">

    <property name="dataSource" ref="myDataSource" />
    <property name="transactionManager" ref="transactionManager" />
    <property name="overwriteExistingJobs" value="true" />
    <property name="autoStartup" value="true" />
    <property name="jobFactory">
                <bean class="org.springframework.scheduling.quartz.SpringBeanJobFactory"/>
            </property>
    <property name="triggers">
        <list>
            <bean class="org.springframework.scheduling.quartz.CronTriggerFactoryBean" p:cronExpression="0 0 0 * * ?"                   p:misfireInstruction="2">
                <property name="jobDetail" ref="myJob" />
            </bean>
            <bean class="org.springframework.scheduling.quartz.CronTriggerFactoryBean "
                p:cronExpression="0 0 20 * * ?"
                p:misfireInstruction="2">
                <property name="jobDetail" ref="myJob" />
            </bean>
        </list>
    </property>
    <property name="quartzProperties">
        <props>
            <prop key="org.quartz.scheduler.instanceName">fsbu_scheduler</prop>
            <prop …
Run Code Online (Sandbox Code Playgroud)

spring cluster-computing quartz-scheduler crontrigger

5
推荐指数
1
解决办法
7644
查看次数