Spring Boot Starter Batch এর ব্যবহার

Spring Batch এবং Spring Boot Integration - স্প্রিং ব্যাচ (Spring Batch) - Java Technologies

408

Spring Boot Starter Batch হল Spring Boot এর একটি স্টার্টার প্যাকেজ যা Spring Batch এর সাথে সহজে কাজ করতে সহায়তা করে। এটি Spring Batch ফিচার এবং কনফিগারেশনগুলোকে Spring Boot অ্যাপ্লিকেশনের মধ্যে খুবই সহজভাবে অন্তর্ভুক্ত করতে সক্ষম। Spring Boot Starter Batch ব্যবহার করে ব্যাচ প্রসেসিং অ্যাপ্লিকেশন তৈরি করতে ডিপেনডেন্সি কনফিগারেশন এবং ইনফ্রাস্ট্রাকচার কনফিগারেশন অনেকটাই স্বয়ংক্রিয় হয়ে যায়, যা ডেভেলপারদের জন্য কাজ সহজ করে দেয়।

Spring Batch মূলত ব্যাচ প্রক্রিয়া এবং জব রান করার জন্য ব্যবহৃত হয়, যেমন বড় ডেটাসেট প্রক্রিয়া, ডাটা ম্যানিপুলেশন, ইত্যাদি। Spring Boot Starter Batch এর মাধ্যমে Spring Batch এর জব ও স্টেপ কনফিগারেশন এবং অন্যান্য ব্যাচ অপারেশন আরও দ্রুত এবং সহজে করা যায়।


Spring Boot Starter Batch সেটআপ

Spring Boot Starter Batch সেটআপ করার জন্য প্রথমে আপনার Maven বা Gradle প্রজেক্টে সঠিক ডিপেনডেন্সি যোগ করতে হবে।

Maven ডিপেনডেন্সি

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-batch</artifactId>
</dependency>

এই ডিপেনডেন্সি Spring Batch এর জন্য প্রয়োজনীয় সমস্ত ফিচার এবং কনফিগারেশন যোগ করবে।

application.properties কনফিগারেশন

Spring Boot Starter Batch এর মাধ্যমে application.properties বা application.yml ফাইলের মাধ্যমে ব্যাচ কনফিগারেশন সহজভাবে করা যায়।

spring.batch.job.enabled=true
spring.batch.initialize-schema=always  # স্কিমা স্বয়ংক্রিয়ভাবে তৈরি হবে
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

এখানে spring.batch.initialize-schema=always এর মাধ্যমে Spring Batch এর জন্য প্রয়োজনীয় টেবিলগুলো ডাটাবেসে স্বয়ংক্রিয়ভাবে তৈরি হবে।


Spring Batch Job এবং Step কনফিগারেশন

Spring Boot Starter Batch এর মাধ্যমে Job এবং Step কনফিগারেশন খুব সহজে করা যায়। নিচে একটি উদাহরণ দেখানো হলো যেখানে Job এবং Step কনফিগার করা হয়েছে।

Step কনফিগারেশন

package com.example.demo;

import org.springframework.batch.core.Step;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.core.launch.support.RunIdIncrementer;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableBatchProcessing
public class BatchConfig {

    @Bean
    public Job job(JobBuilderFactory jobBuilderFactory, Step step1) {
        return jobBuilderFactory.get("job")
                .incrementer(new RunIdIncrementer())
                .flow(step1)  // Define step1
                .end()
                .build();
    }

    @Bean
    public Step step1(StepBuilderFactory stepBuilderFactory, 
                      ItemReader<String> reader, 
                      ItemProcessor<String, String> processor, 
                      ItemWriter<String> writer) {
        return stepBuilderFactory.get("step1")
                .<String, String>chunk(10)  // Define chunk size
                .reader(reader)
                .processor(processor)
                .writer(writer)
                .build();
    }
}

এখানে, JobBuilderFactory এর মাধ্যমে একটি নতুন Job তৈরি করা হয়েছে যা একটি Step নিয়ে কাজ করবে। Step কনফিগারেশন এ ItemReader, ItemProcessor, এবং ItemWriter ব্যবহার করা হয়েছে।


ItemReader, ItemProcessor এবং ItemWriter তৈরি করা

ItemReader: এই অংশটি ডাটা রিড করার জন্য ব্যবহৃত হয়, যেমন ডাটাবেস বা ফাইল থেকে।

ItemProcessor: রিড করা ডাটাকে প্রসেস করার জন্য ব্যবহৃত হয়, যেমন ফিল্টার বা কনভার্সন করা।

ItemWriter: প্রসেস করা ডাটাকে আউটপুটে লেখার জন্য ব্যবহৃত হয়, যেমন ডাটাবেস বা ফাইলে।

package com.example.demo;

import org.springframework.batch.item.ItemReader;
import org.springframework.batch.item.ItemProcessor;
import org.springframework.batch.item.ItemWriter;
import org.springframework.stereotype.Component;

@Component
public class SimpleReader implements ItemReader<String> {
    private String[] data = {"Item1", "Item2", "Item3"};
    private int index = 0;

    @Override
    public String read() throws Exception {
        if (index < data.length) {
            return data[index++];
        } else {
            return null; // End of data
        }
    }
}

@Component
public class SimpleProcessor implements ItemProcessor<String, String> {
    @Override
    public String process(String item) throws Exception {
        return item.toUpperCase();  // Convert to uppercase
    }
}

@Component
public class SimpleWriter implements ItemWriter<String> {
    @Override
    public void write(List<? extends String> items) throws Exception {
        items.forEach(System.out::println);  // Print each item to console
    }
}

এখানে, SimpleReader একটি ইন-মেমরি রিডার, SimpleProcessor ডাটাকে uppercase করে, এবং SimpleWriter সেই ডাটাকে কনসোলে লেখে।


JobLauncher দিয়ে ব্যাচ জব রান করা

Spring Boot Starter Batch ব্যবহার করে, Spring Batch জবটি চালাতে JobLauncher ব্যবহার করা হয়। CommandLineRunner বা অন্য কোনো ট্রিগার দিয়ে এটি চালানো যায়।

package com.example.demo;

import org.springframework.batch.core.Job;
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

@Component
public class JobRunner implements CommandLineRunner {

    @Autowired
    private JobLauncher jobLauncher;

    @Autowired
    private Job job;

    @Override
    public void run(String... args) throws Exception {
        jobLauncher.run(job, new JobParameters());
    }
}

এখানে, JobLauncher দিয়ে job চালানো হচ্ছে, যা Spring Batch জব প্রক্রিয়া শুরু করে।


Spring Boot Starter Batch এর সুবিধা

  • সহজ কনফিগারেশন: Spring Boot Starter Batch এর মাধ্যমে Spring Batch এর কনফিগারেশন অনেক সহজ হয়ে যায়, যেহেতু অনেক কনফিগারেশন অটো-এনেবল হয়ে যায়।
  • স্বয়ংক্রিয় স্কিমা ইনিশিয়ালাইজেশন: Spring Batch ডাটাবেসের জন্য প্রয়োজনীয় টেবিলগুলো স্বয়ংক্রিয়ভাবে তৈরি হয়।
  • Job এবং Step কনফিগারেশন: Spring Boot Starter Batch ব্যবহার করে Job এবং Step গুলি খুব সহজে কনফিগার করা যায়।
  • Fault Tolerance: Spring Batch এর মাধ্যমে ব্যাচ প্রক্রিয়ায় Retry এবং Skip কৌশল ব্যবহার করা যায়, যা ব্যাচ প্রসেসিং আরও নির্ভরযোগ্য করে তোলে।

সারাংশ

Spring Boot Starter Batch একটি শক্তিশালী টুল যা Spring Batch এর সাথে সহজে কাজ করতে সাহায্য করে। এটি Spring Batch এর জন্য প্রয়োজনীয় কনফিগারেশন, ডাটাবেস স্কিমা ইনিশিয়ালাইজেশন, এবং Job/Step কনফিগারেশনকে সহজ করে দেয়। Spring Batch জব এবং স্টেপ কনফিগারেশন, ItemReader, ItemProcessor, এবং ItemWriter এর মাধ্যমে ডেটা প্রক্রিয়া এবং আউটপুট লেখার কাজ অত্যন্ত সহজ এবং দ্রুত করা যায়। Spring Boot Starter Batch এর মাধ্যমে ব্যাচ প্রসেসিং অ্যাপ্লিকেশন তৈরি করা আরও দ্রুত এবং মডুলার হয়ে ওঠে।

Content added By
Promotion

Are you sure to start over?

Loading...