Ejecutar Quartz jobs a pedido

Cuando desarrollamos aplicación con spring, quartz y la configuración de los jobs queda empaquetada en la aplicación, resulta bastante molesto tener que cambiar la configuración, recompilar y desplegar nuevamente la aplicación, en algunos casos hasta se tiene que volver a la configuración inicial luego de una sola ejecución.
Para no tener que caer en esto, nos podemos valer de JMX y exponer el bean que contiene el método que es ejecutado por quartz.
Hay que tener en cuenta que esta ejecución, en el caso de que quartz este configurado para dejar registro de las corridas en la BD, no quedara registrada en las tablas de control de quartz.
 

<bean id="holaMundo" class="com.demo.quartz.HolaMundo"/>
 

<bean id="exporter" class="org.springframework.jmx.export.MBeanExporter" 
          lazy-init="false">
        <property name="beans">
            <map>
                <entry key="jobs:name=holaMundo" value-ref="holaMundo"/>
            </map> 
        </property>
</bean>
 

<bean id="Tarea.HolaMundo"
  class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="holaMundo" />
        <property name="targetMethod" value="holaMundo" />
        <property name="concurrent" value="false" />
        
</bean>
 
<bean id="simpleTriggerActualizaciones"
      class="org.springframework.scheduling.quartz.SimpleTriggerBean">
        <property name="jobDetail" ref="Tarea.HolaMundo" />
        <property name="startDelay" value="2000" />
        
        <property name="repeatInterval" value="30000" />
</bean>
 
<bean id="schedulerFactoryBean"
    class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="simpleTriggerActualizaciones" />
            </list>
        </property>
</bean>
 
 
Una vez desplegada la aplicación, ejecutamos jconsole y en la solapa MBeans estará publicado el bean.

No hay comentarios:

Publicar un comentario en la entrada