2010-10-31 8 views
6

Estoy utilizando Quartz para construir un ThreadPool agrupado y tengo varias tareas que se ejecutan en varias ocasiones. ¿Cuál es la mejor manera de ejecutar 1 tarea de forma inmanente y solo una vez en el ThreadPool agrupado? Sé que puedo establecer la tarea con una alta prioridad. Pero, ¿cuál es la mejor forma de registrar una tarea de "un solo disparo"?Tarea inmediata de una vez con Cuarzo

Respuesta

4

siento que debo estar perdiendo algo, o tal vez sólo por alto este bit en la documentación:

public SimpleTrigger(String name, String group, Date startTime, Date endTime, int repeatCount, long repeatInterval)


SimpleTrigger trigger = new SimpleTrigger("myTrigger", 
              null, 
              new Date(), 
              null, 
              0, 
              0L); 
+2

repeatInterval no puede ser cero o el SimpleTrigger arrojará un org.quartz.SchedulerException durante la validación. – Aidamina

+2

Esto no funciona para el cuarzo 2.2.1. me sale un error al decir que no puedo instanciar SimpleTrigger – AD14

+0

Funciona con cuarzo ~ 1.6 pero no con ~ 2.1 –

11

También puede utilizar la clase TriggerBuilder a hacer la vida un poco mas facil Es similar a lo publicado anteriormente, solo un poco más limpio.

Trigger trigger = TriggerBuilder.newTrigger() 
    .startNow() 
    .build(); 
+0

Esto funciona para el cuarzo 2.2.1 para disparar un solo trabajo una vez. – AD14

+0

Parece que no puedo encontrar la manera de agregar instrucciones de falla de disparo a este disparador? – pkrish

2

La forma más fácil de accionar un solo disparo para un trabajo de pre-registrado:

Scheduler sched = ... 
scheduler.triggerJob(jobKey); 
Cuestiones relacionadas