6

पर केवल कुछ बार एक क्लस्टर पर्यावरण में स्प्रिंग बीन के रूप में क्वार्ट्ज शेड्यूलर का उपयोग कर रहा हूं।क्वार्ट्ज शेड्यूलर: प्रत्येक क्लस्टर नोड पर कुछ नौकरियों को ट्रिगर करें और क्लस्टर

मेरे पास @NotConcurrent के साथ एनोटेटेड कुछ नौकरियां हैं और वे प्रति क्लस्टर में एक बार चल रहे हैं (यानी केवल एक नोड में, केवल एक थ्रेड में)।

अब मुझे क्लस्टर के प्रत्येक नोड पर एक नौकरी चलाने की जरूरत है। मैंने @NotConcurrent एनोटेशन हटा दिया, लेकिन यह केवल एक मशीन पर प्रत्येक थ्रेड पर चलता है। यह अन्य नोड्स पर नहीं निकाल दिया जाता है।

मुझे नौकरी के साथ क्या टिप्पणी करनी चाहिए?

उदाहरण: जॉब 1 नोटकॉन्केंटेंट एनोटेटेड मध्यरात्रि में निर्धारित है => यह हर मध्यरात्रि में केवल 1 मशीन पर आग लगती है। जॉब 2 मध्यरात्रि में निर्धारित एनोटेटेड => यह हर आधी रात हर मशीन पर आग लगती है।

धन्यवाद।

उत्तर

7

AFAIK क्वार्ट्ज नौकरी हमेशा क्वार्ट्ज द्वारा चुनी गई एक नोड पर निष्पादित की जाती है। @NonConcurrent एनोटेशन केवल क्वार्ट्ज को एक विशेष नौकरी पर एक ही नौकरी निष्पादित करने से रोकता है।

दूसरे शब्दों में, आप क्वार्ट्ज को कई नोड्स पर एक साथ निष्पादित नहीं कर सकते हैं। यह हमेशा नौकरी निष्पादित करने के लिए एक एकल नोड उठाता है।

आप जो वर्णन करते हैं उसे समझने के लिए, आपको कई नौकरियों की आवश्यकता हो सकती है (एक ही नौकरी कक्षा और संबंधित ट्रिगर्स के बिना)। फिर आपको किसी ऑर्केस्ट्रेटर नौकरी को कार्यान्वित करने की आवश्यकता होगी जो दूरस्थ रूप से कनेक्ट होगा, उदा। जेएमएक्स या आरएमआई के माध्यम से, व्यक्तिगत नोड्स के लिए और मैन्युअल रूप से नौकरियों को ट्रिगर करें।

आप हमारे उत्पाद क्वार्ट्जडेस्क (www.quartzdesk.com) को देखना चाहते हैं जो एक वेब-सेवा प्रदान करता है जो एक एकल-अंतराल प्रदान करता है जिसके माध्यम से आप व्यक्तिगत क्वार्ट्ज शेड्यूलर उदाहरणों से कनेक्ट कर सकते हैं और, उदाहरण के लिए, उन पर नौकरियां ट्रिगर करें।

+3

धन्यवाद। इस सीमा को जानने से मुझे सभी क्लस्टर नोड्स पर उस नौकरी को लॉन्च करने के लिए एक क्रॉन अभिव्यक्ति के साथ वसंत @ शेड्यूल्ड एनोटेशन का उपयोग करना पड़ा। यह संकर दृष्टिकोण बहुत अच्छी तरह से काम कर रहा है। – fnqlo

+0

हाय जान, क्या आप अधिक जानकारी में एक संभावित समाधान की व्याख्या कर सकते हैं? मुझे एक ही समस्या है, मुझे सभी वेबलॉगिक नोड्स पर एक कार्य चलाने की आवश्यकता है (वर्तमान में 2 हैं)। मैं इसे विज्ञापन करने में सक्षम होना चाहता हूं (उदाहरण के लिए सर्वलेट से)। मैं पहले से ही कुछ निर्धारित नौकरियों के लिए क्वार्ट्ज का उपयोग कर रहा हूं, इसलिए मैं सोच रहा था कि इस कार्य वितरण को सौंपना संभव है या नहीं। धन्यवाद – andreybavt

+0

विचार यह था कि आप अपनी कार्यकर्ता नौकरियों को लागू करते हैं, लेकिन आप उनके साथ किसी भी ट्रिगर्स को संबद्ध नहीं करते हैं। फिर आपके पास एक ऑर्केस्ट्रेटर नौकरी है जो ट्रिगर (ओं) से जुड़ी होगी। जब क्वार्ट्ज ऑर्केस्ट्रेटर नौकरी को निकालता है, तो जॉब क्वार्ट्ज नोड्स पर जेएमएक्स, आरएमआई या जेएक्स-डब्लूएस वेब-सेवा (यदि आपके पास क्वार्ट्जडेस्क है) के माध्यम से बस कनेक्ट होता है जहां आप अपनी कार्यकर्ता नौकरियों को निष्पादित करना चाहते हैं। यदि आप अपने कार्यकर्ता नौकरियों को सभी क्वार्ट्ज उदाहरणों पर निष्पादित करना चाहते हैं, तो ऑर्केस्ट्रेटर नौकरी कॉन्फ़िगर किए गए क्वार्ट्ज उदाहरणों की सूची के माध्यम से बस फिर से शुरू हो जाएगी और जेएमएक्स/आरएमआई/जेएक्स-डब्ल्यूएस पर उन नौकरियों को "मैन्युअल रूप से" आग लग जाएगी। –

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