4
在集羣設置(使用JDBC數據存儲)中,對Spring 3.1使用Quartz 2.1.6時,我們遇到了一個問題。 當前環境:Quartz Clustering - 在服務器啓動時複製觸發器
- 喬布斯和cron觸發器在spring配置文件中定義(見下文)
- overwriteExistingJobs屬性設置爲true的SchedulerFactoryBean,所以我們沒有得到添加到數據庫的新作業定義每次部署。
- 但是,在集羣中的每次部署之後,似乎每個節點都會重新創建觸發器數據。例如,如果我們有2個觸發器指向1個作業和4個節點,那麼在集羣部署之後,DB有1個作業定義和4個2個觸發器。每次重新部署添加4x2觸發器。
此舉是否正常?如果是的話:我們如何告訴Quartz不要在每個部署中重新創建觸發器數據? (或覆蓋數據,與喬布斯)
<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 key="org.quartz.scheduler.instanceId">AUTO</prop>
<prop key="org.quartz.jobStore.misfireThreshold">60000</prop>
<prop key="org.quartz.jobStore.class">org.quartz.impl.jdbcjobstore.JobStoreTX</prop>
<prop key="org.quartz.jobStore.driverDelegateClass">org.quartz.impl.jdbcjobstore.oracle.weblogic.WebLogicOracleDelegate
</prop>
<prop key="org.quartz.jobStore.selectWithLockSQL">SELECT * FROM {0}LOCKS WHERE SCHED_NAME = {1} AND LOCK_NAME = ? FOR UPDATE
</prop>
<prop key="org.quartz.jobStore.tablePrefix">fsqrz_</prop>
<prop key="org.quartz.scheduler.skipUpdateCheck">true</prop>
<prop key="org.quartz.jobStore.isClustered">true</prop>
<prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop>
<prop key="org.quartz.threadPool.threadCount">3</prop>
<prop key="org.quartz.plugin.triggHistory.class">org.quartz.plugins.history.LoggingTriggerHistoryPlugin
</prop>
<prop key="org.quartz.plugin.triggHistory.triggerFiredMessage">Trigger {1}.{0} fired job {6}.{5} at {4, date,
yyyy-MM-dd HH:mm:ss}
</prop>
<prop key="org.quartz.plugin.triggHistory.triggerCompleteMessage">Trigger {1}.{0} completed firing job {6}.{5} at {4,
date, yyyy-MM-dd HH:mm:ss} with resulting trigger instruction code
{9}
</prop>
</props>
</property>
</bean>
澄清:'SimpleTriggerBean'需要設置'name'屬性。 – Thomas 2013-08-28 03:09:03