En mi aplicación Spring estoy usando el SchedulerFactoryBean
para integrar con Quartz. Vamos a tener instancias agrupadas de Tomcat, y por lo tanto quiero tener un entorno de Cuarzo agrupado, de modo que los mismos trabajos no se ejecuten al mismo tiempo en diferentes servidores web.Cuarzo y primavera: ¿agrupado pero NO persistente?
Para hacer esto, mi app-context.xml
es el siguiente:
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger"/>
<ref bean="simpleTrigger" />
</list>
</property>
<property name="dataSource" ref="dataSource"/>
<property name="overwriteExistingJobs" value="true"/>
<!-- found in applicationContext-data.xml -->
<property name="applicationContextSchedulerContextKey" value="applicationContext"/>
<property name="quartzProperties">
<props>
<prop key="org.quartz.scheduler.instanceName">SomeBatchScheduler</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.simpl.RAMJobStore</prop>-->
<prop key="org.quartz.jobStore.class">org.quartz.impl.jdbcjobstore.JobStoreTX</prop>
<prop key="org.quartz.jobStore.driverDelegateClass">org.quartz.impl.jdbcjobstore.StdJDBCDelegate</prop>
<prop key="org.quartz.jobStore.tablePrefix">QRTZ_</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">25</prop>
<prop key="org.quartz.threadPool.threadPriority">5</prop>
</props>
</property>
</bean>
Todo funciona bien, excepto que cuando intento de quitar o cambiar un disparador, a continuación, reinicie mi aplicación, los viejos disparadores son todavía persistían en el DB, y todavía se ejecuta. No quiero esto, solo quiero que se eliminen cuando la aplicación se detiene (o se reinicia). Establecí el valor de la propiedad overwriteExistingJobs
como verdadero, ya que pensé que eso era lo que hacía.
¿Alguna idea? Todo lo que quiero usar para la base de datos es la agrupación, no cualquier tipo de persistencia más allá de eso.
Tuve el mismo problema y no pude encontrar ninguna solución. Finalmente, saqué el trabajo de la aplicación web y lo programé para que se ejecute a través de cron. Curioso por ver lo que otros tienen que decir. – chedine
Usar terracota? –