MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

टास्कलेट का उपयोग करके या CompositeItemWriter के अंदर स्प्रिंग बैच के अंदर तर्क बनाना?

आपको ClassifierCompositeItemWriter वस्तुओं को वर्गीकृत करने और प्रत्येक प्रकार को उसकी संगत फ़ाइल में लिखने के लिए। यहां एक त्वरित उदाहरण दिया गया है जिसे आप आजमा सकते हैं:

आयात करें .batch.core.configuration.annotation.EnableBatchProcessing;import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;import org.springframework.batch. launch.JobLauncher;import org.springframework.batch.item.ItemReader;import org.springframework.batch.item.ItemWriter;import org.springframework.batch.item.file.FlatFileItemWriter;import org.springframework.batch.item.file. Builder.FlatFileItemWriterBuilder;import org.springframework.batch.item.file.transform.PassThroughLineAggregator;import org.springframework.batch.item.support.ClassifierCompositeItemWriter;import org.springframework.batch.item.support.ListItemReader;import org.spring.spring.spring. वर्गीकृत करें। वर्गीकरण; आयात org.springframew ork.context.ApplicationContext;import org.springframework.context.annotation.AnnotationConfigApplicationContext;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.core.io.FileSystemResource; @Configuration@EnableBatchProcessingpublic class MyJob { Private JobBuilderFactory jobBuilderFactory; निजी StepBuilderFactory stepBuilderFactory; सार्वजनिक MyJob (JobBuilderFactory jobBuilderFactory, StepBuilderFactory stepBuilderFactory) { this.jobBuilderFactory =jobBuilderFactory; this.stepBuilderFactory =stepBuilderFactory; } @बीन सार्वजनिक ItemReader<व्यक्ति> itemReader() { व्यक्ति foo1 =नया व्यक्ति (); foo1.setId (1); foo1.setName ("foo1"); व्यक्ति foo2 =नया व्यक्ति (); foo2.setId (2); foo2.setName ("foo2"); व्यक्ति बार1 =नया व्यक्ति (); bar1.setId(3);bar1.setName("bar1"); व्यक्ति बार2 =नया व्यक्ति (); bar2.setId(4);bar2.setName("bar2"); वापसी नई ListItemReader<>(Arrays.asList(foo1, foo2, bar1, bar2)); } @बीन पब्लिक क्लासिफायर कॉम्पोजिटइटमवाइटर <व्यक्ति> क्लासिफायर कॉम्पोजिटइटमवाइटर (आइटमवाइटर <व्यक्ति> फूइटमवाइटर, आइटमवाइटर <पर्सन> बारइटमवाइटर) { क्लासिफायर कॉम्पोजिटइटमवाइटर <व्यक्ति> क्लासिफायर कॉम्पोजिटइटमवाइटर =नया क्लासिफायर कॉम्पोजिटइटमवाइटर <>(); classifierCompositeItemWriter.setClassifier((Classifier>) व्यक्ति -> {अगर (person.getName().startsWith("foo")) {वापसी fooItemWriter; } और {वापसी barItemWriter; }}); रिटर्न क्लासिफायरकंपोजिटइटमवाइटर; } @Bean public FlatFileItemWriter fooItemWriter() { वापसी new FlatFileItemWriterBuilder() .name("fooItemWriter") .resource(new FileSystemResource("foos.txt")) .lineAggregator(new PassThroughLineAggregator<>()) ।बनाना(); } @Bean public FlatFileItemWriter barItemWriter() { रिटर्न new FlatFileItemWriterBuilder() .name("barItemWriter") .resource(new FileSystemResource("bars.txt")) .lineAggregator(new PassThroughLineAggregator<>()) ।बनाना(); } @ बीन पब्लिक स्टेप डेटाएक्सट्रैक्शनस्टेप () {रिटर्न स्टेपबिल्डरफैक्टरी.गेट ("डेटाएक्सट्रैक्शनस्टेप")। <व्यक्ति, व्यक्ति> चंक (2)। रीडर (आइटम रीडर ())। स्ट्रीम (fooItemWriter ()) .stream (barItemWriter ()) .build (); } @ बीन पब्लिक जॉब डेटा एक्सट्रैक्शनजॉब () {रिटर्न जॉबबिल्डर फैक्ट्री.गेट ("डेटाएक्सट्रैक्शनजॉब")। स्टार्ट (डेटाएक्सट्रैक्शनस्टेप ()) .बिल्ड (); } सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] args) अपवाद फेंकता है { ApplicationContext संदर्भ =नया एनोटेशनकॉन्फिगएप्लिकेशन कॉन्टेक्स्ट (MyJob.class); जॉब लॉन्चर जॉब लॉन्चर =संदर्भ। गेटबीन (जॉब लॉन्चर। क्लास); जॉब जॉब =संदर्भ। गेटबीन (जॉब। क्लास); jobLauncher.run (नौकरी, नया जॉब पैरामीटर ()); } सार्वजनिक स्थैतिक वर्ग व्यक्ति { निजी इंट आईडी; निजी स्ट्रिंग नाम; पब्लिक पर्सन () { } पब्लिक पर्सन (इंट आईडी, स्ट्रिंग नेम) {this.id =id; यह नाम =नाम; } सार्वजनिक int getId () {रिटर्न आईडी; } सार्वजनिक शून्य setId (int id) {this.id =id; } सार्वजनिक स्ट्रिंग getName () {वापसी का नाम; } सार्वजनिक शून्य सेटनाम (स्ट्रिंग नाम) { यह नाम =नाम; } @ ओवरराइड पब्लिक स्ट्रिंग टूस्ट्रिंग () {रिटर्न "पर्सन{" + "आईडी =" + आईडी + ", नाम ='" + नाम + '\'' + '}'; } }}

यह नमूना कुछ व्यक्ति पढ़ता है आइटम और नाम foo* . के साथ लिखता है करने के लिए foos.txt और जिनका नाम bar* . है करने के लिए bars.txt

आशा है कि यह मदद करता है।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगोडब नदी के माध्यम से लोचदार खोज में सूचकांक बनाने में मानचित्रण प्रभावी नहीं हो रहा है

  2. मैं नेस्टेड सरणी में एक दस्तावेज़ को कैसे अपडेट कर सकता हूं?

  3. मोंगोडब में एक सरणी में सभी तत्वों को अपडेट करें

  4. 'व्यक्ति रिपोजिटरी' नाम से बीन बनाने में त्रुटि:init विधि का आह्वान विफल; नेस्टेड अपवाद com.mongodb.util.JSONParseException है:

  5. MongoDB घड़ी () NodeJS और Mongoose के साथ डेटाबेस में परिवर्तन का निरीक्षण करने के लिए