Spring Batch হল স্প্রিং ফ্রেমওয়ার্কের একটি গুরুত্বপূর্ণ কম্পোনেন্ট যা বড় পরিমাণ ডেটা প্রসেসিং এবং ব্যাচ টাস্কের জন্য ব্যবহৃত হয়। এটি Job, Step, এবং Tasklet এর মতো মৌলিক উপাদান দিয়ে তৈরি, যা ডেটা প্রক্রিয়া এবং ব্যাচ প্রসেসিংয়ের কাজ সহজ এবং কার্যকর করে তোলে।
এই টিউটোরিয়ালে আমরা Spring Batch এর মূল উপাদানগুলি — Job, Step, Tasklet এবং তাদের কাজের প্রক্রিয়া নিয়ে আলোচনা করব।
Spring Batch - Overview
Spring Batch হল একটি ফ্রেমওয়ার্ক যা ব্যাচ প্রসেসিংয়ের জন্য তৈরি করা হয়েছে। এটি ব্যবহৃত হয় দীর্ঘ-running ব্যাচ অ্যাপ্লিকেশনগুলির জন্য যেমন বড় ডেটা সেট প্রক্রিয়া, ডেটা কনভার্শন, রিপোর্টিং ইত্যাদি। Spring Batch মূলত Job, Step, Tasklet, এবং ItemReader, ItemProcessor, ItemWriter এর সমন্বয়ে কাজ করে।
Spring Batch এর মৌলিক উপাদান
১. Job
Job হল স্প্রিং ব্যাচের মূল একক যা ব্যাচ প্রসেসিংয়ের পুরো প্রক্রিয়া পরিচালনা করে। একটি Job একটি বা একাধিক Step নিয়ে গঠিত। এটি একটি কনটেইনার হিসেবে কাজ করে যা একাধিক স্টেপ (যেমন ডেটা রিড, প্রসেস এবং রাইট) পরিচালনা করতে সক্ষম।
উদাহরণ: Job কনফিগারেশন
@Bean
public Job exampleJob(JobBuilderFactory jobBuilderFactory, StepBuilderFactory stepBuilderFactory) {
return jobBuilderFactory.get("exampleJob")
.start(step1())
.next(step2())
.build();
}
এখানে, exampleJob একটি Job যা দুটি Step (step1 এবং step2) এর মাধ্যমে প্রসেসিং করবে। একটি Job বিভিন্ন Step এর মাধ্যমে একাধিক কাজ সম্পাদন করতে পারে।
২. Step
Step একটি ব্যাচ প্রসেসিংয়ের ছোট একক কাজ, যা ডেটা রিডিং, প্রসেসিং বা লেখার মতো কাজ করতে পারে। একটি Job একাধিক Step নিয়ে গঠিত। প্রতিটি Step একটি নির্দিষ্ট কার্যক্রম যেমন ItemReader, ItemProcessor, এবং ItemWriter ব্যবহার করে একটি কাজ সম্পাদন করে। একটি Step সাধারণত ব্যাচ কাজের একক লজিক বা কাজের একটি নির্দিষ্ট অংশকে প্রতিনিধিত্ব করে।
উদাহরণ: Step কনফিগারেশন
@Bean
public Step step1(StepBuilderFactory stepBuilderFactory) {
return stepBuilderFactory.get("step1")
.<String, String>chunk(10)
.reader(new MyItemReader())
.processor(new MyItemProcessor())
.writer(new MyItemWriter())
.build();
}
এখানে, step1 একটি Step যা MyItemReader, MyItemProcessor, এবং MyItemWriter ব্যবহার করে ডেটা রিড, প্রসেস এবং রাইট করবে। chunk(10) এর মাধ্যমে এটি প্রতি চাঙ্কে ১০টি রেকর্ড প্রসেস করবে।
৩. Tasklet
Tasklet হল স্প্রিং ব্যাচের একটি একক কাজ যা একটি নির্দিষ্ট কাজ বা কার্যক্রম সম্পাদন করে। এটি Step এর মধ্যে ব্যবহার করা যেতে পারে, যেখানে আপনি কোনো একটি নির্দিষ্ট কাজ (যেমন একটি স্ক্রিপ্ট চালানো, ফাইল কপি করা) করতে চান, যা ItemReader, ItemProcessor, এবং ItemWriter ব্যবহারের বাইরে। Tasklet সাধারণত ব্যাচ প্রসেসিংয়ের মধ্যে কোন নির্দিষ্ট কাজ সম্পাদন করতে ব্যবহৃত হয়।
উদাহরণ: Tasklet কনফিগারেশন
@Bean
public Step taskletStep(StepBuilderFactory stepBuilderFactory) {
return stepBuilderFactory.get("taskletStep")
.tasklet(new MyTasklet())
.build();
}
এখানে, taskletStep একটি Step যা MyTasklet নামক একটি কাস্টম Tasklet ক্লাস ব্যবহার করে নির্দিষ্ট কাজ সম্পাদন করবে।
Tasklet Interface:
public class MyTasklet implements Tasklet {
@Override
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
// Custom task logic here
System.out.println("Tasklet executed!");
return RepeatStatus.FINISHED; // Indicating task is finished
}
}
এখানে, MyTasklet ক্লাসটি Tasklet ইন্টারফেসকে ইমপ্লিমেন্ট করে এবং execute() মেথডে কাস্টম কাজ সম্পাদন করে।
৪. RepeatStatus
RepeatStatus হল একটি enum যা Tasklet এর কাজের অবস্থা নির্দেশ করে:
- RepeatStatus.FINISHED: কাজ সম্পন্ন হয়েছে।
- RepeatStatus.CONTINUABLE: কাজ চলতে থাকবে।
Spring Batch এর কাজের প্রক্রিয়া
Spring Batch এর কাজের প্রক্রিয়া মূলত নিম্নলিখিত পর্যায়ে চলে:
- Job Execution: একটি Job শুরু হয় এবং এটি Step অনুযায়ী কার্যক্রম সম্পাদন করতে শুরু করে।
- Step Execution: Step এর মধ্যে আপনি বিভিন্ন কাজ যেমন ItemReader, ItemProcessor, ItemWriter বা Tasklet ব্যবহার করে ডেটা রিড, প্রসেস এবং রাইট করতে পারেন।
- Tasklet Execution: যদি Step এ Tasklet থাকে, তবে Tasklet কাজটি সম্পাদন করে এবং শেষে RepeatStatus.FINISHED বা RepeatStatus.CONTINUABLE রিটার্ন করে।
- Job Completion: Step গুলি সম্পন্ন হলে, Job সম্পন্ন হয় এবং ফলাফল (সাফল্য বা ব্যর্থতা) রিপোর্ট করা হয়।
সারাংশ
Spring Batch একটি শক্তিশালী ফ্রেমওয়ার্ক যা বড় ডেটাসেট এবং দীর্ঘ-running প্রসেসিংয়ের জন্য ব্যবহৃত হয়। এটি Job, Step, এবং Tasklet এর মাধ্যমে কাজ করে:
- Job: একটি ব্যাচ কাজের সমস্ত কার্যক্রমের গুচ্ছ।
- Step: একটি ব্যাচ কাজের একক ছোট কাজ।
- Tasklet: নির্দিষ্ট কাজ (যেমন স্ক্রিপ্ট রান, ফাইল কপি) সম্পাদন করার জন্য ব্যবহৃত হয়।
স্প্রিং ব্যাচের মাধ্যমে আপনি বড় পরিমাণ ডেটা প্রক্রিয়া করার জন্য খুবই কার্যকর এবং স্কেলেবল অ্যাপ্লিকেশন তৈরি করতে পারেন।