2013-04-23 8 views
6

एक क्वार्ट्ज नौकरी और निम्न आदेशक्वार्ट्ज नौकरी हटाने में विफल रहता है, अब क्या?

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

deleted मान लिया जाये कि यह देखते हुए वापस false रूप में आता है, के रूप में मैं इसे समझते हैं, इसका मतलब है कि JVM के दृष्टिकोण से, काम अभी भी वहाँ है।

यह 2 प्रश्नों के साथ:

  1. यह किसी कार्य को हटाने के लिए मजबूर करना संभव है?
  2. कौन सी घटना क्वार्ट्ज को नौकरी हटाने के लिए रोकती है?

यदि अपवाद नहीं फेंक दिया गया है, तो क्या यह मानना ​​सुरक्षित है कि नौकरी नहीं मिली? इसका क्या कारण होगा? ऐसा करने का एकमात्र तरीका यह नहीं है कि नौकरी को पहली जगह हटाया जाए?

मैं

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

का उपयोग कर रहा है एक सही तरीका चीजों को संभालने के लिए के रूप में इस हड़ताल आप? क्या मेरा तर्क सही है?

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

एक कारण प्रदर्शन करना मैं क्यों काम किया गया था मैं गलत काम समूह मूल्य दे रही थी नष्ट करने के लिए सक्षम नहीं था सेट है। – Mateen

उत्तर

6
  1. हाँ, आप पहले से ही कर रहे हैं।
  2. नौकरी वर्तमान में चल रही है।

यदि आपको यह चलने के दौरान नौकरी हटाने की ज़रूरत है तो सुनिश्चित करें कि आपका काम org.quartz.InterruptableJob लागू करता है। फिर आप इसे चलाने के दौरान इसे रोकने के लिए org.quartz.Scheduler.interrupt (JobKey) को कॉल कर सकते हैं।

अपने शेड्यूलर अपवाद के बाद सामान्य अपवाद के लिए पकड़ जोड़ने का प्रयास करें (यह बेहतर अपवाद हैंडलिंग है और यदि आप त्रुटियों के बारे में सुनिश्चित नहीं हैं तो यह आपकी मदद करेगा)।

यह भी ध्यान रखें कि जब आप क्वार्ट्ज नौकरी बनाते हैं, तो आप jobbuilder.storeDurably (false) का उपयोग कर सकते हैं, जिससे आपके क्वार्ट्ज नौकरी को स्वचालित रूप से हटाया जाएगा जब इससे जुड़े सक्रिय ट्रिगर नहीं होते हैं।

0

एक नौकरी का समय निर्धारण नीचे एक

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

में काम कार्रवाई

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())); 
संबंधित मुद्दे