2014-04-04 4 views
9

मेरे पास क्वार्ट्ज जॉब है जो हर 10 मिनट में शुरू होता है।एक और जॉब समाप्त होने पर ही शुरू करने के लिए क्वार्ट्ज जॉब पर कैसे सेट करें, रोका?

यदि कोई जॉब 10 मिनट में खत्म नहीं होता है, तो अगले 10 वें मिनट में एक और जॉब शुरू होगा।

मुझे जो चाहिए वह है: अगला जॉब (प्रत्येक 10 मिनट के बाद) केवल तभी शुरू होना चाहिए, यदि पिछला जॉब चलाना समाप्त हो गया हो। इसे करने का कोई तरीका है?

उत्तर

8

Quartz Documentation

@DisallowConcurrentExecution एक एनोटेशन कि नौकरी वर्ग कि क्वार्ट्ज बताता है एक दी नौकरी परिभाषा के कई उदाहरण (है कि दिए गए काम वर्ग को संदर्भित करता है) समवर्ती निष्पादित करने के लिए नहीं करने के लिए जोड़ा जा सकता है । वहां शब्द पर ध्यान दें, क्योंकि इसे सावधानी से चुना गया था। पिछले खंड के उदाहरण में, यदि "SalesReportJob" में यह एनोटेशन है, तो "SalesReportForJoe" के केवल एक उदाहरण की तुलना में किसी भी समय निष्पादित हो सकता है, लेकिन यह "SalesReportForMike" के उदाहरण के साथ निष्पादित कर सकता है। बाधा एक उदाहरण परिभाषा (जॉबडिंट) पर आधारित है, न कि जॉब क्लास के उदाहरणों पर। हालांकि, यह निर्णय लिया गया था (क्वार्ट्ज के डिजाइन के दौरान) कक्षा में ही एनोटेशन करने के लिए, क्योंकि अक्सर वर्ग को कोडित करने के तरीके में अंतर डालता है।

आप न SalesReportForMike और SalesReportForJoe चाहते समवर्ती चलाने के लिए है, तो आप तो किसी भी समय केवल एक ही काम चला जाएगा पर 1. करने के लिए अनुसूचक के ThreadPool आकार सेट कर सकते हैं।

इसके अलावा StatefulJob

+0

स्टेटफुल जोब सही है, धन्यवाद। – victorio

1

DisallowConcurrentExecution एनोटेशन पर एक नज़र डालें जो एक ही नौकरी के एक ही समय में चलाने के कई उदाहरणों को रोक देगा।

+0

कि अच्छा होना चाहिए पर एक नज़र डालें, लेकिन मैं 1.8 का उपयोग कर रहा है, और मैं इसे अद्यतन नहीं कर सकते। – victorio

संबंधित मुद्दे