Spring Batch এর মধ্যে Job Scheduling একটি গুরুত্বপূর্ণ কার্যকলাপ, যেখানে নির্দিষ্ট সময়ে বা নির্দিষ্ট নিয়মে কোনো Job চলতে পারে। Cron Expressions হলো একটি বিশেষ টাইম ফরম্যাট যা একটি নির্দিষ্ট সময়সূচী (schedule) তৈরি করতে ব্যবহৃত হয়। Spring Batch এ Job Scheduling করতে Cron Expressions ব্যবহৃত হয়, যার মাধ্যমে আপনি যেকোনো Job নির্দিষ্ট সময়ে চালানোর জন্য কনফিগার করতে পারেন।
Cron Expressions কি?
Cron Expressions হলো একটি টাইমিং সিস্টেম যা আপনি একটি নির্দিষ্ট সময়সূচী (schedule) তৈরি করতে ব্যবহার করতে পারেন। এটি UNIX-এর cron কমান্ডের ভিত্তিতে কাজ করে, যা একটি টাস্ক নির্দিষ্ট সময়ে বা নির্দিষ্ট সময়ের মধ্যে পুনরাবৃত্তি করে।
একটি Cron Expression সাধারণত ৫টি বা ৬টি ফিল্ড নিয়ে গঠিত হয়:
- (Field 1): মিনিট (0 - 59)
- (Field 2): ঘণ্টা (0 - 23)
- (Field 3): দিন (1 - 31)
- (Field 4): মাস (1 - 12)
- (Field 5): সপ্তাহের দিন (0 - 6) [0 = Sunday]
- (Field 6): বছরের কোনো নির্দিষ্ট দিন (optional)
Cron Expression উদাহরণ:
0 0 12 * * ?— প্রতি দিন দুপুর ১২টায়।0 15 10 * * ?— প্রতি দিন ১০:১৫ AM-এ।0 0/5 * * * ?— প্রতি ৫ মিনিটে।
Spring Batch এ Cron Expression ব্যবহার করে Job Scheduling
Spring Batch এ Job Scheduling করার জন্য Spring Scheduler বা Spring TaskScheduler ব্যবহার করা হয়। যদি আপনি নির্দিষ্ট সময়ে একটি Batch Job চালাতে চান, তাহলে আপনি @Scheduled এনোটেশন এবং Cron Expressions ব্যবহার করতে পারেন।
Spring Batch এর Cron Expression এর মাধ্যমে Job Scheduling করার জন্য Spring Boot Scheduler বা Quartz Scheduler ব্যবহার করা যেতে পারে।
Spring Batch এ Cron Expressions ব্যবহার করে Job Scheduling উদাহরণ
১. Spring Boot এ Cron Expression ব্যবহার করে Job Scheduling
Spring Boot এর মধ্যে @Scheduled এনোটেশন ব্যবহার করা হয় Job Scheduling এর জন্য। আপনি @Scheduled(cron = "cron expression") এনোটেশন ব্যবহার করে Job কে একটি নির্দিষ্ট সময়ে রান করাতে পারেন।
উদাহরণ:
import org.springframework.batch.core.Job;
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class JobScheduler {
@Autowired
private JobLauncher jobLauncher;
@Autowired
private Job myJob; // Spring Batch Job
@Scheduled(cron = "0 0 12 * * ?") // প্রতিদিন দুপুর ১২টায় Job রান হবে
public void runJob() {
try {
jobLauncher.run(myJob, new JobParameters());
} catch (Exception e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
@Scheduled(cron = "0 0 12 * * ?"): এই Cron Expression প্রতিদিন দুপুর ১২টায় Job রান করবে।JobLauncher: এটি Job শুরু করতে ব্যবহৃত হয়।JobParameters: Job-এর প্যারামিটারগুলি পাস করতে ব্যবহৃত হয়।
২. Cron Expression এর ধরন
Spring Batch এর Job Scheduling এ Cron Expression কিছু বিশেষ ধরনের ব্যবহার হতে পারে:
0 0 12 * * ?— প্রতিদিন দুপুর ১২টায়।0 15 10 * * ?— প্রতি দিন সকাল ১০:১৫ AM-এ।0 0/5 * * * ?— প্রতি ৫ মিনিটে।0 0 0 1 * ?— প্রতি মাসের প্রথম দিন মধ্যরাতে।
৩. @Scheduled এনোটেশন এবং Cron Expression
Cron Expressions এর মাধ্যমে Scheduling খুব সহজেই করা যায় Spring Boot অ্যাপ্লিকেশনে। আপনার Job বা টাস্ককে নির্দিষ্ট সময়ে বা নির্দিষ্ট সময়ের মধ্যে রান করার জন্য আপনি @Scheduled এনোটেশন ব্যবহার করতে পারেন।
Cron Expression এর অন্যান্য কিছু উদাহরণ:
| Cron Expression | অর্থ |
|---|---|
0 0 12 * * ? | প্রতিদিন দুপুর ১২টায় রান হবে |
0 0 10 * * ? | প্রতিদিন ১০:০০ AM-এ রান হবে |
0 0/15 9-17 * * ? | প্রতিদিন সকাল ৯টা থেকে বিকেল ৫টা পর্যন্ত প্রতি ১৫ মিনিটে রান হবে |
0 0 1 * * ? | প্রতি মাসের প্রথম দিনে রান হবে |
0 0 0 * * SUN | প্রতি রবিবার মধ্যরাতে রান হবে |
৪. Quartz Scheduler Integration (ঐচ্ছিক)
Spring Batch-এ আরও উন্নত সিডিউলিং করতে Quartz Scheduler ব্যবহার করা যেতে পারে। Quartz Scheduler Spring Batch এর সঙ্গে সহজে ইন্টিগ্রেট হতে পারে, যেখানে Cron Expression এর মাধ্যমে Job Execution Time নির্ধারণ করা হয়।
Quartz Scheduler ব্যবহার করে Spring Batch Job Scheduling:
import org.quartz.*;
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.batch.core.Job;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.quartz.QuartzJobBean;
import org.springframework.stereotype.Component;
@Component
public class QuartzJobScheduler extends QuartzJobBean {
@Autowired
private JobLauncher jobLauncher;
@Autowired
private Job myJob; // Spring Batch Job
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
try {
jobLauncher.run(myJob, new JobParameters());
} catch (Exception e) {
e.printStackTrace();
}
}
@Bean
public JobDetail jobDetail() {
return JobBuilder.newJob(QuartzJobScheduler.class)
.withIdentity("job1")
.storeDurably()
.build();
}
@Bean
public Trigger trigger() {
return TriggerBuilder.newTrigger()
.withIdentity("trigger1")
.withSchedule(CronScheduleBuilder.cronSchedule("0 0 12 * * ?"))
.build();
}
}
এখানে Quartz Scheduler ব্যবহার করে Cron Expression এর মাধ্যমে Spring Batch Job রান করার প্রক্রিয়া দেখানো হয়েছে।
সারাংশ
Cron Expressions Spring Batch-এ Job Scheduling এর জন্য একটি অত্যন্ত গুরুত্বপূর্ণ টুল, যা নির্দিষ্ট সময়ে বা নির্দিষ্ট সময়ের মধ্যে Job চালানোর সুবিধা প্রদান করে। Spring Boot এর @Scheduled এনোটেশন বা Quartz Scheduler এর মাধ্যমে Cron Expressions ব্যবহার করা হয়। এই ধরনের সিডিউলিংয়ের মাধ্যমে ডেটা প্রক্রিয়াকরণ, রিপোর্টিং, বিলিং, বা অন্যান্য ব্যাচ প্রসেসিং কাজগুলি নির্দিষ্ট সময়ে বা নিয়মিতভাবে অটোমেটিক্যালি চালানো যায়। Spring Batch এর মাধ্যমে Cron Expressions ব্যবহার করে ব্যাচ কাজগুলি স্কেলেবল এবং দক্ষভাবে পরিচালিত হয়।
Read more