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