स्प्रिंग बैच - वास्तुकला

निम्नलिखित स्प्रिंग बैच की वास्तुकला का आरेखीय प्रतिनिधित्व है। जैसा कि चित्र में दर्शाया गया है, वास्तुकला में तीन मुख्य घटक हैं,Application, Batch Core, तथा Batch Infrastructure

Application - इस घटक में सभी नौकरियां और कोड हैं जो हम स्प्रिंग बैच ढांचे का उपयोग करके लिखते हैं।

Batch Core - इस घटक में सभी एपीआई कक्षाएं हैं जो बैच जॉब को नियंत्रित करने और लॉन्च करने के लिए आवश्यक हैं।

Batch Infrastructure - इस घटक में पाठक, लेखक और अनुप्रयोग और बैच कोर घटक दोनों द्वारा उपयोग की जाने वाली सेवाएँ शामिल हैं।

स्प्रिंग बैच के घटक

निम्नलिखित दृष्टांत स्प्रिंग बैच के विभिन्न घटकों को दर्शाता है और वे एक दूसरे के साथ कैसे जुड़े हैं।

काम

स्प्रिंग बैच एप्लिकेशन में, एक नौकरी बैच प्रक्रिया है जिसे निष्पादित किया जाना है। यह बिना किसी रुकावट के शुरू से अंत तक चलता है। यह नौकरी आगे के चरणों में विभाजित है (या नौकरी में चरण शामिल हैं)।

हम XML फ़ाइल या जावा वर्ग का उपयोग करके स्प्रिंग बैच में नौकरी कॉन्फ़िगर करेंगे। स्प्रिंग बैच में एक जॉब का XML कॉन्फ़िगरेशन निम्नलिखित है।

<job id = "jobid"> 
   <step id = "step1" next = "step2"/> 
   <step id = "step2" next = "step3"/> 
   <step id = "step3"/> 
</job>

एक बैच नौकरी टैग <नौकरी> </ job> के भीतर कॉन्फ़िगर की गई है। इसका एक विशेषता नाम हैid। इन टैगों के भीतर, हम चरणों की परिभाषा और क्रम को परिभाषित करते हैं।

Restartable - सामान्य तौर पर, जब कोई नौकरी चल रही होती है और हम इसे फिर से शुरू करने की कोशिश करते हैं जो कि माना जाता है restartऔर इसे फिर से शुरू किया जाएगा। इससे बचने के लिए, आपको सेट करने की आवश्यकता हैrestartable के लिए मूल्य false जैसा की नीचे दिखाया गया।

<job id = "jobid" restartable = "false" >

</job>

कदम

step एक नौकरी का एक स्वतंत्र हिस्सा है जिसमें नौकरी को परिभाषित करने और निष्पादित करने के लिए आवश्यक जानकारी शामिल है (इसका हिस्सा)।

जैसा कि आरेख में निर्दिष्ट है, प्रत्येक चरण एक ItemReader, ItemProcessor (वैकल्पिक) और एक ItemWriter से बना होता है। A job may contain one or more steps

पाठक, लेखक और प्रोसेसर

एक item reader एक विशेष स्रोत से स्प्रिंग बैच एप्लिकेशन में डेटा पढ़ता है, जबकि ए item writer स्प्रिंग बैच एप्लिकेशन के डेटा को किसी विशेष गंतव्य पर लिखते हैं।

एक Item processorएक वर्ग है जिसमें प्रोसेसिंग कोड होता है जो स्प्रिंग बैच में पढ़े गए डेटा को प्रोसेस करता है। अगर आवेदन पढ़ता है"n" रिकॉर्ड, फिर प्रोसेसर में कोड प्रत्येक रिकॉर्ड पर निष्पादित किया जाएगा।

जब कोई पाठक और लेखक नहीं दिया जाता है, तो ए taskletस्प्रिंगबैच के लिए एक प्रोसेसर के रूप में कार्य करता है। यह केवल एक ही कार्य करता है। उदाहरण के लिए, यदि हम इसमें एक सरल कदम के साथ एक नौकरी लिख रहे हैं जहां हम MySQL डेटाबेस से डेटा पढ़ते हैं और इसे संसाधित करते हैं और इसे एक फ़ाइल (फ्लैट) पर लिखते हैं, तो हमारा कदम उपयोग करता है -

  • reader जो MySQL डेटाबेस से पढ़ता है।

  • writer जो एक फ्लैट फ़ाइल को लिखता है।

  • custom processor जो हमारी इच्छा के अनुसार डेटा को संसाधित करता है।

<job id = "helloWorldJob"> 
   <step id = "step1"> 
      <tasklet> 
         <chunk reader = "mysqlReader" writer = "fileWriter" 
            processor = "CustomitemProcessor" ></chunk> 
      </tasklet> 
   </step> 
</ job>

स्प्रिंग बैच की एक लंबी सूची प्रदान करता है readers तथा writers। इन पूर्वनिर्धारित कक्षाओं का उपयोग करके, हम उनके लिए सेम को परिभाषित कर सकते हैं। हम चर्चा करेंगेreaders तथा writers आने वाले अध्यायों में अधिक विस्तार से।

JobRepository

स्प्रिंग बैच में एक जॉब रिपॉजिटरी जॉबलांचर, जॉब और स्टेप कार्यान्वयन के लिए क्रिएट, रिट्रीव, अपडेट और डिलीट (CRUD) ऑपरेशंस प्रदान करता है। हम एक XML फ़ाइल में नौकरी रिपॉजिटरी को परिभाषित करेंगे जैसा कि नीचे दिखाया गया है।

<job-repository id = "jobRepository"/>

के अतिरिक्त id, कुछ और विकल्प (वैकल्पिक) उपलब्ध हैं। सभी विकल्पों और उनके डिफ़ॉल्ट मानों के साथ कार्य भंडार का विन्यास निम्नलिखित है।

<job-repository id = "jobRepository" 
   data-source = "dataSource" 
   transaction-manager = "transactionManager" 
   isolation-level-for-create = "SERIALIZABLE" 
   table-prefix = "BATCH_" 
   max-varchar-length = "1000"/>

In-Memory Repository - यदि आप डेटाबेस में स्प्रिंग बैच के डोमेन ऑब्जेक्ट्स को जारी नहीं रखना चाहते हैं, तो आप नीचे दिखाए अनुसार जॉब रिपॉजिटरी के इन-मेमोरी संस्करण को कॉन्फ़िगर कर सकते हैं।

<bean id = "jobRepository" 
   class = "org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean ">
   <property name = "transactionManager" ref = "transactionManager"/>
</bean>

JobLauncher

JobLauncher एक इंटरफ़ेस है जो स्प्रिंग बैच की नौकरी के लिए सराहना करता है given set of parametersSampleJoblauncher वह वर्ग है जो लागू करता है JobLauncherइंटरफेस। निम्नलिखित जॉबलांचर का विन्यास है।

<bean id = "jobLauncher" 
   class = "org.springframework.batch.core.launch.support.SimpleJobLauncher"> 
   <property name = "jobRepository" ref = "jobRepository" /> 
</bean>

JobInstance

JobInstanceनौकरी के तार्किक रन का प्रतिनिधित्व करता है; यह तब बनता है जब हम नौकरी चलाते हैं। प्रत्येक नौकरी के उदाहरण को नौकरी के नाम से अलग किया जाता है और दौड़ते समय पैरामीटर इसे पास करते हैं।

यदि एक JobInstance निष्पादन विफल हो जाता है, तो उसी JobInstance को फिर से निष्पादित किया जा सकता है। इसलिए, प्रत्येक JobInstance में कई कार्य निष्पादन हो सकते हैं।

JobExecution और StepExecution

JobExecution और StepExecution किसी कार्य / चरण के निष्पादन का प्रतिनिधित्व करते हैं। इनमें नौकरी / कदम की रन जानकारी होती है जैसे कि स्टार्ट टाइम (नौकरी / कदम), अंत समय (नौकरी / कदम)।