2013-04-23 15 views
6

ı anladığım kadarıyla, bu JVM standı noktasından, iş hâlâ var demektir, geri false olarak gelen bir Kuvars iş ve deleted varsayarsak aşağıdaki komutuQuartz bir işi silmekte başarısız, şimdi ne olacak?

boolean deleted = scheduler.deleteJob(event.getName(), "some group name") 

Verilen. Bu 2 sorularla

:

  1. bir işi silmek zorlamak mümkün mü?
  2. Quartz, bir işi silmek için hangi etkinliği engelliyor?

Özel durum atılmazsa, iş bulunamadığını varsaymak güvenli midir? Buna ne sebep olur? Bunun gerçekleşmesinin tek yolu işin ilk etapta silinmesi midir?

Ben

<dependency> 
     <groupId>org.quartz-scheduler</groupId> 
     <artifactId>quartz</artifactId> 
     <version>1.8.0</version> 
    </dependency> 

kullanıyorum mu şeyleri işlemek için doğru bir yol olarak bu grev sen? Benim mantığım doğru mu?

boolean deleted; 
    try { 
     deleted = scheduler.deleteJob(event.getName(), "some group name"); 
     if (!deleted) { 
      logger.warn("Quartz failed to delete the job!" + event.getName() + ". Job not found"); 
     } 
    } catch (SchedulerException e) { 
     logger.error("There is an internal Scheduler error", e); 
    } 
+0

nedenlerinden birini gerçekleştirin set ederken. – Mateen

cevap

6
  1. Evet, zaten yapıyoruz.
  2. İş şu anda çalışıyor.

Çalışırken bir işi silmeniz gerekiyorsa, işinizin org.quartz.InterruptableJob uygulandığından emin olun. Ardından, çalıştığı sırada durdurmak için org.quartz.Scheduler.interrupt (JobKey) öğesini çağırabilirsiniz.

SchedulerException öğesinden sonra genel İstisna için bir catch eklemeye çalışın (bu daha iyi istisna işlemesidir ve alabileceğiniz hatalardan emin değilseniz, size yardımcı olacaktır).

Ayrıca, kuvars işi oluşturduğunuzda, bununla ilişkili aktif tetikleyici kalmadığında kuvars işinizin otomatik olarak silinmesine neden olacak jobBuilder.storeDurably (false) öğesini de kullanabilirsiniz.

0

bir iş planlaması i yanlış iş grubu değerini veriyordu edildi işi silmek mümkün değildi neden bir

job.getJobDataMap().put("JOB_NUMBER",input); 
      job.getJobDataMap().put("TRIGGER_NAME",input); 

In altında iş eylemi

TriggerKey triggerKey = new TriggerKey(jobCtx.getMergedJobDataMap().get("TRIGGER_NAME").toString(),jobCtx.getMergedJobDataMap().get("TRIGGER_NAME").toString()); 
//condition 
scheduler.unscheduleJob(triggerKey); 
scheduler.deleteJob(JobKey.jobKey(jobCtx.getMergedJobDataMap().get("JOB_NUMBER").toString(),jobCtx.getMergedJobDataMap().get("JOB_NUMBER").toString()));