2010-10-31 18 views
6

के साथ तत्काल एक बार कार्य मैं क्लस्टर थ्रेडपूल बनाने के लिए Quartz का उपयोग कर रहा हूं और मेरे पास कई बार चलने वाले कार्यों की संख्या है। क्लस्टर थ्रेडपूल पर केवल एक बार चलाने के लिए और केवल एक बार चलाने का सबसे अच्छा तरीका क्या है। मुझे पता है कि मैं कार्य को उच्च प्राथमिकता में सेट कर सकता हूं। लेकिन "एक शॉट" कार्य पंजीकृत करने का सबसे अच्छा तरीका क्या है?क्वार्ट्ज

उत्तर

4

मुझे लगता है कि मैं कुछ याद आ रही किया जाना चाहिए, या शायद तुम सिर्फ डॉक्स में इस बिट की अनदेखी:

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 शून्य नहीं हो सकते या SimpleTrigger सत्यापन के दौरान एक org.quartz.SchedulerException फेंक देते हैं। – Aidamina

+2

यह क्वार्ट्ज 2.2.1 के लिए काम नहीं करता है। मुझे एक त्रुटि मिल रही है जो सरल ट्रिगर – AD14

+0

को तत्काल नहीं कर सकता है क्वार्ट्ज ~ 1.6 के साथ काम करेगा लेकिन ~ 2.1 –

11

तुम भी जीवन एक बनाने के लिए TriggerBuilder वर्ग का उपयोग कर सकते थोड़ा आसान यह पहले से पोस्ट किया गया था, बस थोड़ा क्लीनर के समान है।

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

के साथ यह क्वार्ट्ज 2.2.1 के लिए केवल एक बार नौकरी को आग लगाने के लिए काम करता है। – AD14

+0

मुझे इस ट्रिगर में मिस्फीयर निर्देश जोड़ने का कोई तरीका नहीं दिख रहा है? – pkrish

2

एक पूर्व-पंजीकृत नौकरी के लिए एक एक शॉट को गति प्रदान करने का सबसे आसान तरीका:

Scheduler sched = ... 
scheduler.triggerJob(jobKey); 
संबंधित मुद्दे