2015-09-15 15 views
5

मैं स्प्रिंग बैच का उपयोग कर 2 (शायद अधिक, सादगी के लिए 2 मान लें) डेटाबेस का उपयोग कर रहा हूं। सभी नौकरी डेटा (सभी BATCH_ * तालिकाओं) को संग्रहीत करने के लिए। दूसरा वास्तव में मेरे व्यापार तर्क डेटा चलाने के लिए। ऐसी कुछ चीजें हैं जिन्हें मैं समझ नहीं पा रहा हूं।वसंत बैच नौकरी-भंडार और वास्तविक कार्यों के बीच विभिन्न लेनदेन-प्रबंधक का उपयोग

  1. जब मैं अपने JobRepository मैं पहले ही अपनी TransactionManager निर्दिष्ट किया है की घोषणा की, क्यों
  2. मैं वर्तमान में tasklet दे रहा हूँ (मैंने जान-बूझकर डिफ़ॉल्ट नाम का उपयोग नहीं कर रहा हूँ) मैं अपने tasklet पर फिर से ऐसा करने की क्या ज़रूरत है? मेरे जॉब रिपोजिटरी के रूप में एक ही TrasactionManager जो मेरे चरणों में जो कुछ भी कर रहा है उससे अलग कनेक्शन प्रबंधित करता है। क्या इसका मतलब है कि मैंने अपने लेखक या पाठक के अंदर अपना खुद का लेनदेन प्रबंधन किया है?
  3. यदि # 2 सत्य है, तो How does Spring Batch transaction management work? में "क्या होगा" मेरे लिए एक समस्या होगी (XA किए बिना) सही? क्योंकि मेरा डेटा और जॉब डेटा अलग-अलग कनेक्शन में हैं, है ना?

उत्तर

3

आप कार्यों और नौकरी भंडार के लिए एक अलग लेनदेन प्रबंधक का उपयोग कर सकते हैं। यहां देखें: http://forum.spring.io/forum/spring-projects/batch/39609-using-2-different-datasources-with-spring-batch

इस प्रकार, उनमें से दो को नामित करने की आवश्यकता।

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

+0

यही वह है जिसके बारे में मुझे चिंता है। तो जब एक्सए का उपयोग नहीं किया जाता है, तो बैच और डेटा टेबल को उसी डेटाबेस में सही करने के लिए सबसे अच्छा है? या सुनिश्चित करें कि हर कदम सुरक्षित रूप से फिर से चलाया जा सकता है? एक और बात यह है कि मेरे चरण तर्क के अंदर जेडीबीसी कॉल के लिए टास्कलेट पर लेनदेन प्रबंधक या नौकरी की स्थिति बचा रहा है? अथवा दोनों? – lunaspeed

+0

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

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