2011-09-01 7 views
5

समस्या: आकार> 10 एमबी की फाइल पढ़ें और वसंत बैच का उपयोग कर मचान तालिका में लोड। यदि यह विफल रहता है तो नौकरी को पुनरारंभ करने के लिए, फ़ाइल को पढ़ने के दौरान हम राज्य को कैसे बनाए रख सकते हैं?स्प्रिंग बैच - एकाधिक धागे में एक बड़ी फ़ाइल को कैसे पढ़ा जाए?

प्रलेखन FileItemReader सुरक्षित थ्रेड नहीं है और यह सुरक्षित थ्रेड अगर हम बनाने की कोशिश के अनुसार, हम restartability खो जाते हैं। तो बुनियादी प्रश्न हैं:

  1. क्या ब्लॉक में फ़ाइल को पढ़ने का कोई तरीका है और प्रत्येक थ्रेड जानता है कि इसे किस ब्लॉक को पढ़ने की आवश्यकता है?
  2. हम पढ़ने तुल्यकालिक करते हैं, तो क्या परिवर्तन इस परिदृश्य में काम restartable करने की आवश्यकता है?

अगर किसी को भी इसी तरह के मुद्दों का सामना करना पड़ा है या इसका कोई विश्लेषण है कि यह कैसे कार्य करता है तो हमें निर्णय लेने में मदद मिलेगी।

इसके अलावा, किसी भी संकेत दिए गए या नमूना कोड की सराहना कर रहे हैं।

+0

artbristol इसे किसी न किसी। आपके पाठक को मल्टीथ्रेडिंग क्षमताओं को जोड़ने का कोई कारण नहीं है, लेकिन इसका मतलब यह नहीं है कि आपके प्रोसेसर या लेखक (ओं) से इसका लाभ नहीं उठाएगा। – Floegipoky

उत्तर

3

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

लेकिन आपके मामले में, दोनों धागे एक ही डिवाइस से एक ही आईओ इंतजार करेगी, तो एक से अधिक का उपयोग कर कोई मतलब नहीं है।

भी देखें इस सवाल Reading a file by multiple threads

+0

समानांतर में विभिन्न धागे में पढ़ना, प्रसंस्करण और लेखन को विभाजित करना प्रदर्शन में सुधार नहीं करेगा? – Ketan

+0

हाय @artbristol, मैं कई एक्सएमएल में मेरी एकमात्र XML विभाजित लेकिन अभी भी उम्मीद नहीं रही थी प्रदर्शन .. http://stackoverflow.com/questions/29166558/spring-batch-multi-file-resource-takes-same-time- जैसा कि आप कृपया सुझाव दे सकते हैं? – Ketan

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