2011-08-02 18 views
8

Me preguntaba si se puede configurar el cuarzo para ejecutar un trabajo de procesamiento largo que se ejecuta solo en un hilo en un momento dado. En otras palabras, digamos que tengo el cuarzo configurado con SimpleThreadPool de tamaño 5. Y tengo un trabajo que se dispara cada 10 segundos, pero que podría tomar más de 10 segundos para completarse en ciertas situaciones. ¿Hay alguna manera de configurar el desencadenador de cuarzo/tarea/programador para que este desencadenador no se active nuevamente ya que se encuentra en estado de ejecución en otro subproceso? Cuando el desencadenador se activa nuevamente, otro subproceso del grupo lo recogerá y tendrá dos instancias del mismo trabajo ejecutándose al mismo tiempo. Gracias por tu contribución.Tener cuarzo ejecutar un trabajo solo en un hilo cuando hay varios hilos de cuarzo

Aclaración: (para las sugerencias sobre el uso de un subproceso de subproceso de tamaño 1). El requisito es configurar el grupo de subprocesos con 5 subprocesos y tener un solo trabajo para ejecutar solo en un único subproceso en cualquier momento dado, en otras palabras, una instancia de un trabajo debe ejecutarse por un solo subproceso.

+0

¿Qué tal si disminuimos el tamaño de la agrupación a 1? – fmucar

Respuesta

20

Si está utilizando cuarzo 1.x crea la clase de empleo implementar StatefulJob. Si está utilizando Quartz 2.x, agregue la anotación @DisallowConcurrentExecution a la clase de trabajo.

1

conjunto

org.quartz.threadPool.threadCount=1 

Habrá un único subproceso de trabajo de cuarzo en un momento

Cuestiones relacionadas