Spring Batch একটি শক্তিশালী ফ্রেমওয়ার্ক যা ব্যাচ প্রক্রিয়াকরণে ব্যবহৃত হয়, যেমন বড় পরিমাণ ডেটা প্রক্রিয়া করা, ডেটা রিড এবং রাইট করা, এবং অন্যান্য ব্যাচ ভিত্তিক কাজ। Spring Boot একটি দ্রুত অ্যাপ্লিকেশন তৈরি করার জন্য ডিজাইন করা ফ্রেমওয়ার্ক। Spring Batch এবং Spring Boot একসাথে ব্যবহার করলে আপনি খুব সহজে ব্যাচ প্রক্রিয়াকরণের কাজ করতে পারেন।
এখানে একটি Spring Boot এবং Spring Batch প্রজেক্ট তৈরি করার পুরো প্রক্রিয়া উদাহরণের মাধ্যমে ব্যাখ্যা করা হবে।
1. Spring Boot এবং Spring Batch প্রজেক্ট তৈরি করা
1.1 Spring Initializr ব্যবহার করে প্রজেক্ট তৈরি করা
Spring Initializr দিয়ে Spring Batch এবং Spring Boot প্রজেক্ট তৈরি করা খুবই সহজ।
- Spring Initializr ওয়েবসাইটে যান: Spring Initializr
- Project হিসেবে
Maven ProjectবাGradle Projectনির্বাচন করুন। - Language হিসেবে
Javaনির্বাচন করুন। - Spring Boot version নির্বাচন করুন (যেমন: 3.0.0 বা আপনার পছন্দের লেটেস্ট ভার্সন)।
- Dependencies হিসেবে
Spring WebএবংSpring Batchনির্বাচন করুন। Generateবাটনে ক্লিক করে ZIP ফাইল ডাউনলোড করুন এবং এটি এক্সট্র্যাক্ট করুন।
এখন আপনার প্রজেক্ট তৈরি হয়ে যাবে এবং আপনি আপনার IDE (যেমন IntelliJ IDEA বা Eclipse) তে এটি ওপেন করতে পারবেন।
1.2 Maven ডিপেনডেন্সি কনফিগারেশন
এখন pom.xml ফাইলে Spring Batch এবং Spring Boot এর জন্য প্রয়োজনীয় ডিপেনডেন্সি কনফিগার করতে হবে।
<dependencies>
<!-- Spring Boot Starter Web for web functionalities -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Batch dependency -->
<dependency>
<groupId>org.springframework.batch</groupId>
<artifactId>spring-batch-core</artifactId>
</dependency>
<!-- Spring Boot Starter Batch for batch support -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-batch</artifactId>
</dependency>
<!-- H2 Database for in-memory database (optional, for testing purposes) -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<!-- Spring Boot Starter Test for testing -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
এখানে spring-batch-core Spring Batch এর জন্য প্রয়োজনীয় ডিপেনডেন্সি এবং spring-boot-starter-batch Spring Boot-এ Batch সাপোর্ট যোগ করার জন্য ব্যবহৃত হচ্ছে।
1.3 Spring Batch Configuration
Spring Batch-এ কাজ করার জন্য কিছু কনফিগারেশন সেট করতে হবে। এক্ষেত্রে Job এবং Step কনফিগারেশন করতে হবে।
@Configuration
@EnableBatchProcessing
public class BatchConfig {
@Autowired
private JobBuilderFactory jobBuilderFactory;
@Autowired
private StepBuilderFactory stepBuilderFactory;
@Bean
public Job job(JobCompletionNotificationListener listener, Step step1) {
return jobBuilderFactory.get("myJob")
.incrementer(new RunIdIncrementer())
.listener(listener)
.start(step1)
.build();
}
@Bean
public Step step1(ItemReader<MyItem> reader, ItemProcessor<MyItem, MyProcessedItem> processor, ItemWriter<MyProcessedItem> writer) {
return stepBuilderFactory.get("step1")
.<MyItem, MyProcessedItem>chunk(10)
.reader(reader)
.processor(processor)
.writer(writer)
.build();
}
}
এখানে:
@EnableBatchProcessing: Spring Batch সাপোর্ট সক্ষম করতে ব্যবহৃত হয়।- Job এবং Step কনফিগার করা হয়েছে, যেখানে
step1হল একটি Step এবং এটি একটিchunk(10)প্রক্রিয়া করবে।
1.4 ItemReader, ItemProcessor এবং ItemWriter
ItemReader ডেটা রিড করতে, ItemProcessor ডেটা প্রক্রিয়া করতে এবং ItemWriter ডেটা লিখতে ব্যবহৃত হয়। নিচে একটি উদাহরণ দেওয়া হলো:
ItemReader
@Bean
public ItemReader<MyItem> reader() {
// আপনার ডেটা রিড করার লজিক এখানে
return new MyItemReader();
}
ItemProcessor
@Bean
public ItemProcessor<MyItem, MyProcessedItem> processor() {
return new MyItemProcessor();
}
ItemWriter
@Bean
public ItemWriter<MyProcessedItem> writer() {
// ডেটা লেখার লজিক
return new MyItemWriter();
}
2. Spring Boot Application Class
Spring Boot অ্যাপ্লিকেশন চালানোর জন্য মূল ক্লাস তৈরি করতে হবে, যেটি @SpringBootApplication অ্যনোটেশন দিয়ে চিহ্নিত করা হয়।
@SpringBootApplication
public class BatchApplication {
public static void main(String[] args) {
SpringApplication.run(BatchApplication.class, args);
}
}
এটি Spring Boot অ্যাপ্লিকেশনটি চালু করবে।
3. ব্যাচ প্রসেসিং সম্পাদন করা
Spring Batch-এ ব্যাচ প্রসেসিং সম্পাদন করতে, আমরা একটি Job এবং Step তৈরি করেছি। এখন, ডেটা প্রক্রিয়া করা হবে এবং শেষে সেটি আউটপুট হবে।
Jobএকটি ব্যাচ প্রক্রিয়ায় একাধিক Step থেকে গঠিত হতে পারে।- প্রতিটি
Stepএকটি নির্দিষ্ট কাজ যেমন ডেটা রিড, প্রক্রিয়া করা এবং রাইট করার জন্য ব্যবহৃত হয়। - Chunk Processing প্যাটার্ন ব্যবহৃত হয়েছে যেখানে ডেটার কিছু অংশ (Chunk) একসাথে রিড, প্রসেস এবং রাইট করা হয়।
3.1 Job Completion Listener
এখানে একটি JobCompletionNotificationListener যুক্ত করা হয়েছে, যা ব্যাচ প্রক্রিয়া শেষ হলে কিছু কাস্টম লজিক প্রয়োগ করতে সাহায্য করবে।
@Component
public class JobCompletionNotificationListener extends JobExecutionListenerSupport {
@Autowired
private DataSource dataSource;
@Override
public void afterJob(JobExecution jobExecution) {
if (jobExecution.getStatus() == BatchStatus.COMPLETED) {
System.out.println("Job completed successfully!");
} else if (jobExecution.getStatus() == BatchStatus.FAILED) {
System.out.println("Job failed!");
}
}
}
4. ব্যাচ জব চালানো
আপনার অ্যাপ্লিকেশন চালানোর জন্য, নিচের কমান্ডটি ব্যবহার করতে হবে:
4.1 Maven কমান্ড (JAR তৈরি করা)
mvn clean install
এটি target ফোল্ডারে .jar ফাইল তৈরি করবে।
4.2 Spring Boot অ্যাপ্লিকেশন চালানো
java -jar target/my-batch-job.jar
এটি Spring Batch job চালু করবে এবং আপনার প্রক্রিয়া শুরু হবে।
সারাংশ
Spring Boot এবং Spring Batch এর মাধ্যমে একটি শক্তিশালী ব্যাচ প্রসেসিং অ্যাপ্লিকেশন তৈরি করা সম্ভব। আপনি Spring Initializr ব্যবহার করে Spring Batch সহ একটি প্রজেক্ট তৈরি করতে পারেন, তারপর Job, Step, ItemReader, ItemProcessor, এবং ItemWriter কনফিগার করে ব্যাচ প্রক্রিয়া সম্পন্ন করতে পারেন। Spring Batch ব্যবহারের মাধ্যমে আপনি বড় পরিমাণে ডেটা প্রক্রিয়া, বিশ্লেষণ এবং রাইট করার কাজ সহজভাবে এবং দক্ষতার সাথে করতে পারবেন।