Spring Batch একটি শক্তিশালী ফ্রেমওয়ার্ক যা বড় পরিমাণ ডেটা প্রসেসিংয়ের জন্য ব্যবহৃত হয়। এর মধ্যে একটি গুরুত্বপূর্ণ উপাদান হল Tasklet Interface, যা একক কাজ বা প্রসেসিং ইউনিটের জন্য ব্যবহৃত হয়। Tasklet সাধারণত ছোট কাজ বা একক কাজগুলো সম্পাদন করে যেমন ডেটা সিঙ্ক্রোনাইজেশন, ফাইল কপি করা, ফাইলের মধ্যে ডেটা প্রক্রিয়াজাতকরণ ইত্যাদি। এটি একটি খুবই শক্তিশালী কৌশল যেটি ছোট, নির্দিষ্ট কাজগুলো বাস্তবায়ন করতে ব্যবহৃত হয়।
এই টিউটোরিয়ালে আমরা Tasklet Interface এবং Custom Tasklet তৈরি করার পদ্ধতি সম্পর্কে বিস্তারিত আলোচনা করব।
Tasklet Interface এর কাজ
Tasklet Interface Spring Batch এ একটি কাজ বা প্রসেসিং ইউনিট যা একক স্টেপে ছোট কাজগুলি সম্পাদন করে। এটি সাধারণত একটি নির্দিষ্ট কাজকে সম্পাদন করার জন্য ব্যবহৃত হয় এবং কাজটির অবস্থা RepeatStatus রিটার্ন করে, যা নির্দেশ করে কাজটি চলমান থাকবে, শেষ হবে বা বাতিল করা হবে।
Tasklet ইন্টারফেসের প্রধান মেথড হল:
RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception;
- StepContribution: এটি Step এর প্রসেসিং অবস্থার একটি অংশ, যা এই Step এর জন্য হালনাগাদ তথ্য প্রদান করে।
- ChunkContext: এটি Chunk ভিত্তিক প্রসেসিংয়ের জন্য ব্যবহার করা হয়, যেখানে প্রসেসিংয়ের সময়ে ডেটা বা স্টেট ফরম্যাট করা হয়।
- RepeatStatus: এটি নির্দেশ করে যে Taskletটি আরও একবার সম্পাদিত হবে কি না, বা শেষ হবে।
RepeatStatus এর দুটি মূল মান:
- RepeatStatus.FINISHED: কাজটি শেষ হয়ে গেছে এবং আর পুনরায় সম্পাদন করা হবে না।
- RepeatStatus.CONTINUABLE: কাজটি চলমান থাকবে এবং পরবর্তী চক্রে পুনরায় চালানো হবে।
Custom Tasklet তৈরি করা
Spring Batch এ একটি Custom Tasklet তৈরি করার জন্য আপনাকে Tasklet Interface ইমপ্লিমেন্ট করতে হবে। একটি কাস্টম Tasklet তৈরি করতে সাধারণত নিচের পদক্ষেপগুলি অনুসরণ করা হয়:
Taskletইন্টারফেস ইমপ্লিমেন্ট করা।execute()মেথডে আপনার নির্দিষ্ট কাজটি বাস্তবায়ন করা।- Step এর মধ্যে Tasklet ব্যবহার করা।
উদাহরণ: Custom Tasklet তৈরি
ধরা যাক, আমাদের একটি Tasklet তৈরি করতে হবে যা একটি ফাইলের ভিতর থেকে ডেটা পড়বে এবং সেটি কনসোলে প্রদর্শন করবে। এখানে আমরা একটি সাধারণ Custom Tasklet তৈরি করব যা একটি টেক্সট ফাইল থেকে পাঠ্য ডেটা পড়বে এবং কনসোলে প্রিন্ট করবে।
public class MyFileReadingTasklet implements Tasklet {
@Override
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
// ফাইল পড়া
Path path = Paths.get("data.txt");
try (Stream<String> lines = Files.lines(path)) {
lines.forEach(System.out::println); // কনসোলে ফাইলের ডেটা প্রদর্শন
} catch (IOException e) {
e.printStackTrace();
}
return RepeatStatus.FINISHED; // কাজ শেষ
}
}
এখানে, MyFileReadingTasklet ক্লাস একটি টেক্সট ফাইল থেকে লাইন-by-লাইন ডেটা পড়ে এবং তা কনসোলে প্রিন্ট করে। কাজটি সম্পন্ন হলে RepeatStatus.FINISHED রিটার্ন করা হয়।
Step এর মধ্যে Custom Tasklet ব্যবহার করা
Spring Batch এর একটি Step এ Custom Tasklet ব্যবহার করতে আপনাকে StepBuilderFactory ব্যবহার করে একটি Step তৈরি করতে হবে এবং সেই Step এর মধ্যে Tasklet সেট করতে হবে।
উদাহরণ: Custom Tasklet কে Step এ ব্যবহার করা
@Configuration
@EnableBatchProcessing
public class BatchConfig {
@Autowired
private JobBuilderFactory jobBuilderFactory;
@Autowired
private StepBuilderFactory stepBuilderFactory;
@Bean
public Job fileProcessingJob() {
return jobBuilderFactory.get("fileProcessingJob")
.start(fileProcessingStep()) // প্রথম Step
.build();
}
@Bean
public Step fileProcessingStep() {
return stepBuilderFactory.get("fileProcessingStep")
.tasklet(myFileReadingTasklet()) // Custom Tasklet
.build();
}
@Bean
public Tasklet myFileReadingTasklet() {
return new MyFileReadingTasklet(); // Custom Tasklet Bean
}
}
এখানে, fileProcessingJob() নামে একটি Job তৈরি করা হয়েছে, যার মধ্যে একটি Step (নাম fileProcessingStep) রয়েছে। এই Step এর মধ্যে আমরা আমাদের Custom Tasklet (MyFileReadingTasklet) ব্যবহার করেছি।
Tasklet এর ব্যবহার ক্ষেত্র
Tasklet সাধারণত সেসব কাজের জন্য ব্যবহার হয় যেখানে:
- একক কাজ বা ছোট স্ক্রিপ্ট প্রয়োজন হয়।
- ডেটা রিডিং বা রাইটিং এর কাজ করা হয়, যেমন ফাইল সিস্টেমে কনভার্সন বা ডেটা ম্যানিপুলেশন।
- কোনো নির্দিষ্ট টাস্ক (যেমন, ডেটাবেস মেইন্টেনেন্স, ফাইল কপি, ইত্যাদি) সম্পাদন করতে হবে।
- বড় পরিমাণ ডেটার পরিবর্তে ছোট ছোট কাজ করতে হবে।
সারাংশ
Spring Batch এ Tasklet Interface ছোট কাজ বা একক কাজ সম্পাদন করার জন্য ব্যবহৃত হয়। Tasklet একটি খুবই কার্যকরী উপাদান যা সাধারণত ছোট কাজগুলো, যেমন ফাইল প্রক্রিয়াকরণ বা ডেটাবেস সিঙ্ক্রোনাইজেশন, বাস্তবায়ন করতে ব্যবহৃত হয়। একটি Custom Tasklet তৈরি করতে হলে, আপনাকে Tasklet Interface ইমপ্লিমেন্ট করতে হবে এবং সেই Tasklet এর execute() মেথডে কাজের কার্যক্রম নির্ধারণ করতে হবে। Spring Batch এ Tasklet ব্যবহার করে একক কাজগুলো খুব সহজে সম্পাদন করা যায়, যা ব্যাচ প্রসেসিংয়ের অন্য স্টেপগুলির সাথে একত্রিত হয়ে কার্যকরীভাবে কাজ করতে পারে।
Read more