मेरे पास क्वार्ट्ज नौकरी है जो पहले ही निर्धारित हो चुकी है। मैं इसके साथ जुड़े जॉबडाटा मैप को अपडेट करना चाहता हूं। अगर मुझे JobDataMap jobDataMap = scheduler.getJobDetail(....).getJobDataMap()
के साथ जॉबडाटामैप मिलता है, तो क्या वह नक्शा "लाइव" है? अर्थात। अगर मैं इसे बदलता हूं, तो क्या यह शेड्यूलर में जारी रहेगा? यदि नहीं, तो मैं इसे कैसे जारी रखूं?एक मौजूदा जॉबडेटा मैप अपडेट करें
उत्तर
http://www.quartz-scheduler.org/docs/tutorial/TutorialLesson03.html देखें:
एक नौकरी उदाहरण रूप में परिभाषित किया जा सकता है "स्टेटफुल" या "गैर स्टेटफुल"। गैर-स्टेटफुल जॉब्स में केवल जॉबडेटा मैप संग्रहीत होता है जब वे शेड्यूलर में जोड़े जाते हैं। इसका अर्थ है कि नौकरी के निष्पादन के दौरान नौकरी डेटा मानचित्र की सामग्री में किए गए कोई भी परिवर्तन खो जाएंगे, और अगली बार निष्पादन के बाद काम नहीं करेगा।
... एक राज्यव्यापी नौकरी सिर्फ विपरीत है - इसका जॉबडाटा मैप नौकरी के हर निष्पादन के बाद फिर से संग्रहीत किया जाता है।
जॉब इंटरफ़ेस के बजाय, आप स्टेटफुल जोब इंटरफ़ेस को कार्यान्वित करके एक नौकरी को राज्य के रूप में चिह्नित करें।
मुझे एक ही समस्या थी: मेरे पास दूसरा ट्रिगर है जो नौकरी के डेटा मानचित्र में कतार पर काम करता है जो एक राज्यव्यापी नौकरी निकालता है। हर बार नौकरी की आग लगती है, यह कतार से चुनाव करती है और प्रदूषित तत्व पर कुछ काम करती है। प्रत्येक नौकरी निष्पादन के साथ, कतार में एक कम तत्व होता है (कतार नौकरी के भीतर से सही ढंग से अपडेट की जाती है)। जब कतार खाली होती है, तो नौकरी स्वयं को अनदेखा कर देती है।
मैं कतार में अधिक तर्क प्रदान करने के लिए चल रहे नौकरी/ट्रिगर के तर्कों की सूची को बाहरी रूप से अद्यतन करने में सक्षम होना चाहता था। हालांकि, डेटा मैप को पुनः प्राप्त करना और कतार को अपडेट करना पर्याप्त नहीं था (निम्न निष्पादन दिखाता है कि कतार अद्यतन नहीं है)। समस्या यह है कि क्वार्ट्ज केवल निष्पादन के बाद नौकरी के उदाहरण के नौकरी डेटा मानचित्र को अद्यतन करता है।
यहाँ समाधान मैंने पाया है:
JobDetail jobDetail = scheduler.getJobDetail("myJob", "myGroup");
jobDetail.getJobDataMap.put("jobQueue", updatedQueue);
scheduler.addJob(jobDetail, true);
अंतिम पंक्ति का निर्देश क्वार्ट्ज एक प्रदान कर रहे हैं के साथ संग्रहीत नौकरी बदलने के लिए। अगली बार जब नौकरी निकाल दी जाती है तो यह अद्यतन कतार देखेंगे।
क्वार्ट्ज के नवीनतम संस्करण (2.6.10?) –
क्षमा करें - यह संस्करण 2.1.7 है ... 2.1.6 पहले –
क्वार्ट्ज 2.0 में। StatefulJob
बहिष्कृत है। नौकरी डेटा मानचित्र को जारी रखने के लिए, नौकरी कक्षा पर @PersistJobDataAfterExecution
का उपयोग करें। यह आमतौर पर @DisallowConcurrentExecution
के साथ जाता है।
जानकारी के साथ ठीक है Bozho जानकारी के लिए धन्यवाद। –
लेकिन हम किस तालिका में जॉबडेटा मैप जानकारी पा सकते हैं, मैंने सभी टेबलों की जांच की लेकिन मुझे उन्हें नहीं मिला। –
क्या यह QRTZ_JOB_DETAILS तालिका का Job_data कॉलम है? –
- 1. स्प्रेडशीट से मौजूदा डेटाबेस मान अपडेट करें
- 2. php emoji [मौजूदा कोड अपडेट करें]
- 3. मौजूदा दस्तावेज़ में एक नया फ़ील्ड अपडेट करें
- 4. क्लोजर में रेफ मैप में रिकॉर्ड्स कैसे अपडेट करें?
- 5. मॉर्फिया और मौजूदा दस्तावेज़ फ़ील्ड को कैसे अपडेट करें
- 6. हास्केल: मौजूदा प्रकार के लिए रिकॉर्ड अपडेट
- 7. एक हीट मैप लेयर
- 8. एक थर्मोलर-आधारित थीम अपडेट करें
- 9. nhibernate में एक इंटरफ़ेस कैसे मैप करें?
- 10. 'फली स्थापित' एक मौजूदा फली
- 11. कक्षा एक मेज या tablename निर्दिष्ट नहीं है और एक मौजूदा टेबल-मैप किया वर्ग
- 12. हाइबरनेट में enum प्रकार का एक सेट कैसे मैप करें?
- 13. कोई मौजूदा कस्टमप्रोपर्टी जोड़ें दस्तावेज़ को अपडेट नहीं करता
- 14. ग्रहण - एक मौजूदा परियोजना आयात करें?
- 15. एक अपरिवर्तनीय मैप
- 16. अपडेट करें फेसबुक ऐप अनुमतियां
- 17. एक ही तालिका से एक सम्मिलित करें या अपडेट करें
- 18. मौजूदा प्रोजेक्ट आयात करें
- 19. एक कॉलम अपडेट करें, सभी पंक्तियां
- 20. एडीबी एक गैर-बाजार एपीके अपडेट करें?
- 21. एक SELECT स्टेटमेंट के परिणाम अपडेट करें
- 22. एनोटेटेड एक क्वेरीसेट को कैसे अपडेट करें?
- 23. Azure - BLOB स्टोरेज में मौजूदा xml फ़ाइल को अपडेट करना
- 24. पीएल/एसक्यूएल अपवाद अपडेट/हटाए गए गैर-मौजूदा पंक्ति
- 25. अनुरोध में अंतराल अपडेट करें स्थान अपडेट
- 26. मैप
- 27. किसी मौजूदा एक
- 28. मैं एक मौजूदा तत्व
- 29. एक मौजूदा वेबसाइट
- 30. जावास्क्रिप्ट: मौजूदा एक
लेकिन अगर मैं निष्पादन के बाहर से नौकरी अद्यतन करना चाहता हूं तो क्या होगा? जैसे जेएमएक्स से? –