স্প্রিং ব্যাচ (Spring Batch) একটি শক্তিশালী ফ্রেমওয়ার্ক যা বড় আকারের ডেটা প্রসেসিংয়ের জন্য ব্যবহৃত হয়। এটি কাজের ফ্লো পরিচালনা, ডেটা প্রসেসিং, ব্যাচ জব এক্সিকিউশন এবং ট্রানজেকশন ম্যানেজমেন্টের জন্য বিভিন্ন উপাদান প্রদান করে। এই উপাদানগুলোর মধ্যে JobRepository, JobLauncher, এবং JobExecution অত্যন্ত গুরুত্বপূর্ণ ভূমিকা পালন করে।
JobRepository
JobRepository একটি গুরুত্বপূর্ণ কম্পোনেন্ট যা ব্যাচ জবের স্টেট এবং তথ্য সংরক্ষণ করে। এটি ব্যাচ জবের জন্য একটি ডেটাবেস স্টোর হিসেবে কাজ করে এবং ব্যাচ প্রসেসিংয়ের বিভিন্ন ইনফরমেশন যেমন জবের স্টেট, স্টেপের স্টেট, এবং জব এক্সিকিউশনের ইতিহাস সংরক্ষণ করে।
JobRepository এর ভূমিকা:
- স্টোরেজ: এটি ব্যাচ জব সম্পর্কিত সমস্ত ডেটা যেমন জব স্টেট, স্টেপ স্টেট, পারামিটার, এবং অন্যান্য তথ্য স্টোর করে রাখে।
- স্টেট ট্র্যাকিং: এটি ব্যাচ জবের প্রগ্রেস, সফলতা অথবা ব্যর্থতা ট্র্যাক করে। উদাহরণস্বরূপ, একটি ব্যাচ জব শুরু হলে সেটি
JobExecutionএ কনফিগার করা হয় এবং পরবর্তীতে এর অবস্থা আপডেট করা হয়। - রেসিলিয়েন্স: ব্যাচ জব পুনরায় চালানোর জন্য অতীতের তথ্যগুলির ওপর ভিত্তি করে পুনরায় শুরু করতে সাহায্য করে।
JobRepository কনফিগারেশন:
@Bean
public JobRepository jobRepository(DataSource dataSource, PlatformTransactionManager transactionManager) throws Exception {
JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
factory.setDataSource(dataSource);
factory.setTransactionManager(transactionManager);
factory.setDatabaseType("MYSQL");
return factory.getObject();
}
JobLauncher
JobLauncher একটি ইন্টারফেস যা স্প্রিং ব্যাচ জব এক্সিকিউট করতে ব্যবহার করা হয়। এটি ব্যাচ জব চালানোর জন্য ব্যবহৃত হয় এবং JobExecution অবজেক্ট রিটার্ন করে, যা ব্যাচ জবের এক্সিকিউশন স্টেটাস ধারণ করে।
JobLauncher এর ভূমিকা:
- জব এক্সিকিউশন শুরু করা:
JobLauncherএর মাধ্যমে ব্যাচ জব শুরু হয় এবং এটিJobExecutionঅবজেক্টের মাধ্যমে এক্সিকিউশনের অবস্থা মনিটর করে। - এন্ট্রি পয়েন্ট: এটি স্প্রিং ব্যাচের জন্য জব এক্সিকিউশনের মূল এন্ট্রি পয়েন্ট হিসেবে কাজ করে এবং জবের শুরু থেকে শেষ পর্যন্ত টার্গেট স্টেপে ডেটা প্রসেসিং পরিচালনা করে।
JobLauncher কনফিগারেশন:
@Bean
public JobLauncher jobLauncher(JobRepository jobRepository) {
SimpleJobLauncher jobLauncher = new SimpleJobLauncher();
jobLauncher.setJobRepository(jobRepository);
return jobLauncher;
}
JobLauncher এর ব্যবহার:
@Autowired
private JobLauncher jobLauncher;
@Autowired
private Job job;
public void runBatchJob() throws Exception {
JobExecution jobExecution = jobLauncher.run(job, new JobParameters());
System.out.println("Job Status: " + jobExecution.getStatus());
}
এখানে, jobLauncher.run(job, new JobParameters()) ব্যবহার করে ব্যাচ জব চালানো হচ্ছে এবং এর রিটার্ন হিসেবে JobExecution পাওয়া যাচ্ছে।
JobExecution
JobExecution একটি ক্লাস যা ব্যাচ জবের এক্সিকিউশন স্টেটাস ধারণ করে। এটি ব্যাচ জবের মধ্যে ঘটে যাওয়া সমস্ত তথ্য সংরক্ষণ করে, যেমন জবের স্টেট, শুরু এবং শেষের সময়, ব্যাচ জবের পারামিটার, এবং ব্যতিক্রম (exception) ইত্যাদি।
JobExecution এর ভূমিকা:
- জব এক্সিকিউশনের অবস্থা: এটি ব্যাচ জবের চলমান অবস্থা ট্র্যাক করে, যেমন "STARTED", "COMPLETED", "FAILED" ইত্যাদি।
- পারামিটার সংরক্ষণ: এটি জব এক্সিকিউশনের সময় যে সমস্ত পারামিটার ব্যবহার হয় সেগুলি সংরক্ষণ করে রাখে।
- অপারেশন ফলাফল: এটি এক্সিকিউশনের সময় যে কোনো ব্যতিক্রম বা ত্রুটি ঘটলে তা ট্র্যাক এবং রেজিস্টার করে।
JobExecution এর ব্যবহার:
@Autowired
private JobLauncher jobLauncher;
@Autowired
private Job job;
public void runJob() throws Exception {
JobParameters jobParameters = new JobParametersBuilder()
.addString("jobParameter", "value")
.toJobParameters();
JobExecution jobExecution = jobLauncher.run(job, jobParameters);
System.out.println("Job Execution Status: " + jobExecution.getStatus());
System.out.println("Job Execution ID: " + jobExecution.getId());
}
এখানে, JobExecution রিটার্ন হওয়ার পর আমরা এক্সিকিউশন স্টেটাস এবং অন্যান্য তথ্য দেখতে পারি।
JobRepository, JobLauncher, এবং JobExecution এর সম্পর্ক
- JobRepository: এটি ব্যাচ জবের মেটাডেটা এবং স্টেট স্টোর করে রাখে। যখন একটি জব রান হয়,
JobExecutionঅবজেক্টটিJobRepositoryতে সংরক্ষিত হয়। - JobLauncher: এটি একটি নির্দিষ্ট জব শুরু করতে ব্যবহৃত হয় এবং
JobExecutionতৈরি করে। - JobExecution: এটি ব্যাচ জবের রানিং স্টেটাস এবং অন্যান্য ইনফরমেশন ধারণ করে এবং
JobRepositoryতে সংরক্ষণ করা হয়।
স্প্রিং ব্যাচের এই তিনটি উপাদান একে অপরের সাথে কাজ করে ব্যাচ প্রসেসিংয়ের স্টেট ট্র্যাক করতে, ব্যাচ জব চালাতে এবং সফল বা ব্যর্থ এক্সিকিউশন সম্পর্কে ইনফরমেশন প্রদান করতে।
উপসংহার
স্প্রিং ব্যাচ (Spring Batch) এ JobRepository, JobLauncher, এবং JobExecution একটি ব্যাচ জবের সফল ব্যবস্থাপনা এবং এক্সিকিউশন নিশ্চিত করতে গুরুত্বপূর্ণ ভূমিকা পালন করে। JobRepository ব্যাচ জবের তথ্য সংরক্ষণ করে, JobLauncher ব্যাচ জব শুরু করে, এবং JobExecution এক্সিকিউশন ফলাফল এবং স্টেটাস সংরক্ষণ করে। এভাবে, স্প্রিং ব্যাচ অ্যাপ্লিকেশনগুলিতে ব্যাচ প্রক্রিয়াগুলির কার্যকরী ব্যবস্থাপনা এবং ট্র্যাকিং নিশ্চিত করা হয়।
Read more