2015-05-26 6 views
10

मुझे स्प्रिंग बैच प्रोसेसिंग में डेटा प्रवाह के बारे में कुछ जानकारी चाहिए लेकिन इंटरनेट पर जो भी मैं ढूंढ रहा हूं उसे ढूंढने में असफल रहा (इस साइट पर some useful questions के बावजूद)।स्प्रिंग बैच लेनदेन का प्रबंधन कैसे करता है (संभवतः एकाधिक डेटा स्रोतों के साथ)?

मैं अपनी कंपनी में स्प्रिंग बैच का उपयोग करने के लिए मानकों को स्थापित करने की कोशिश कर रहा हूं और हम सोच रहे हैं कि स्प्रिंग बैच कैसे व्यवहार करता है जब एक चरण में कई प्रोसेसर विभिन्न डेटा स्रोतों पर डेटा अपडेट करते हैं।

यह प्रश्न एक खंडित प्रक्रिया पर केंद्रित है लेकिन अन्य मोडों पर जानकारी प्रदान करने के लिए स्वतंत्र महसूस करें।

जो मैंने देखा है (कृपया मुझे सही करें अगर मुझे गलत है), जब एक पंक्ति पढ़ी जाती है, तो अगले पढ़ने से पहले यह पूरे प्रवाह (पाठक, प्रोसेसर, लेखक) का पालन करता है (जैसा कि सिलो-प्रोसेसिंग के विपरीत है) जहां पाठक सभी लाइनों को संसाधित करेगा, उन्हें प्रोसेसर को भेजें, और इसी तरह)।

मेरे मामले में, कई प्रोसेसर डेटा (विभिन्न डेटाबेस में) पढ़ते हैं और प्रक्रिया में उन्हें अपडेट करते हैं, और आखिर में लेखक डेटा को एक और डीबी में डाल देता है। अभी के लिए, जॉब रेपॉजिटरी डेटाबेस से जुड़ा नहीं है, लेकिन यह एक स्वतंत्र होगा, जिससे चीज अभी भी जटिल हो जाएगी।

यह मॉडल नहीं बदला जा सकता है क्योंकि डेटा कई व्यावसायिक क्षेत्रों से संबंधित है।

इस मामले में लेनदेन कैसे प्रबंधित किया जाता है? क्या डेटा पूर्ण हो जाने पर केवल तभी किया जाता है? और फिर, क्या 2 चरण प्रतिबद्धता प्रबंधन है? यह कैसे सुनिश्चित किया जाता है? डेटा की स्थिरता सुनिश्चित करने के लिए क्या विकास या कॉन्फ़िगरेशन किया जाना चाहिए?

अधिक आम तौर पर, आपकी सिफारिशें इसी तरह की स्थिति में क्या होंगी?

उत्तर

2

स्प्रिंग बैच स्प्रिंग कोर transaction management का उपयोग करता है, जिसमें सेक्शन 5.1 of the Spring Batch docs में वर्णित वस्तुओं के एक हिस्से के आसपास व्यवस्थित अधिकांश लेनदेन अर्थशास्त्र शामिल हैं।

पाठकों और लेखकों का लेनदेन व्यवहार वास्तव में इस बात पर निर्भर करता है कि वे क्या हैं (जैसे फ़ाइल सिस्टम, डेटाबेस, जेएमएस कतार आदि), लेकिन यदि संसाधन लेनदेन का समर्थन करने के लिए कॉन्फ़िगर किया गया है तो उन्हें वसंत द्वारा स्वचालित रूप से सूचीबद्ध किया जाएगा। एक्सए के लिए भी यही जाता है - यदि आप संसाधन एक्सपॉइंट को एक्सए अनुपालन करते हैं तो यह इसके लिए 2 चरण प्रतिबद्धताओं का उपयोग करेगा।

वापस हिस्सा लेन-देन करने के लिए हो रही है, यह हिस्सा आधार पर एक लेन-देन सेटअप होगा, इसलिए यदि आप किसी दिए गए tasklet पर 5 के लिए अंतराल प्रतिबद्ध सेट तो इसे खोलने के लिए और एक नया लेन-देन (बंद है कि सभी संसाधनों द्वारा प्रबंधित शामिल होगा लेनदेन प्रबंधक) पढ़ने की सेट संख्या के लिए (प्रतिबद्ध-अंतराल के रूप में परिभाषित)।

लेकिन यह सब एक ही डेटा स्रोत से पढ़ने के आसपास स्थापित है, क्या यह आपकी आवश्यकता को पूरा करता है? मुझे यकीन नहीं है कि वसंत बैच एक लेनदेन का प्रबंधन कर सकता है जहां यह कई स्रोतों से डेटा पढ़ता है और एक लेनदेन के भीतर प्रोसेसर परिणाम दूसरे डेटाबेस में लिखता है। (वास्तव में मैं ऐसा कुछ भी नहीं सोच सकता जो ऐसा कर सकता है ...)

+0

आपके उत्तर के लिए धन्यवाद। हमें कई डेटाबेस स्थिति का सामना करना पड़ेगा (प्रत्येक व्यवसाय क्षेत्र का अपना डीबी होता है और हमें कभी-कभी कई व्यावसायिक तत्वों तक पहुंचने की आवश्यकता होती है)। हालांकि वे उपयोगी तत्व हैं। – Chop

+0

हाँ, मैं इसके बारे में सोच रहा था, आपको इसे ढांचा बनाना होगा ताकि घटना एक स्रोत से आती है और प्रक्रिया चरण विभिन्न डेटाबेस (जो स्थापित लेनदेन में होता है) से संभावित रूप से पूछताछ कर सकता है और फिर लक्ष्य डीबी अपडेट कर सकता है।या हो सकता है कि विभिन्न उत्पादकों की घटनाओं को कुल मिलाकर हो और उसके बाद एक एकल प्रोसेसर वास्तव में अपडेट कर सके। – stringy05

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