1 Mart 2021 Pazartesi

Quartz JobBuilder Sınıfı

Giriş
Şu satırı dahil ederiz.
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
Kullanım
JobBuilder bir JobDetail nesnesi döndürür. JobDetail için açıklama şöyle
It is an object that contains information for executing the Job. Includes Job name, group, JobDataMap attribute, etc
Aşağıdaki metodların hepsi çağrılır ve en sonunda build() çağrısı ile bir JobDetail döndürülür
newJob() metodu ile çalıştırılacak işin Class bilgisi belirtilir.
usingJobData() metodu ile çalıştırılacak işe geçilecek parametreler belirtilir.
withIdentity() işe çalıştırılacak işe bir isim verilir.
withDescription() işe çalıştırılacak işe bir açıklama verilir.
Örnek
Şöyle yaparız
public <T extends Job> JobDetail buildJobDetail(Class<? extends Job> job, 
                                                SampleJobRequest request) {

  JobDataMap jobDataMap = new JobDataMap(); // job Data Map
  jobDataMap.put("executeCount", 1); // put Data

  return JobBuilder.newJob(job)
    .withIdentity(request.getJobName())
    .withDescription(request.getJobDescription())
    .usingJobData(jobDataMap)
    .build();
}
usingJobData metodu  - JobDataMap 
JobDataMap  için açıklama şöyle
The JobDataMap is an object that stores information that is available when the Job instance runs
Örnek
Şöyle yaparız
import org.quartz.JobBuilder;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;

JobDetail buildJobDetail(ScheduleEmailRequest scheduleEmailRequest) { JobDataMap jobDataMap = new JobDataMap(); jobDataMap.put("email", scheduleEmailRequest.getEmail()); jobDataMap.put("subject", scheduleEmailRequest.getSubject()); jobDataMap.put("body", scheduleEmailRequest.getBody()); return JobBuilder.newJob(EmailJob.class) .withIdentity(UUID.randomUUID().toString(), "email-jobs") .withDescription("Send Email Job") .usingJobData(jobDataMap) .storeDurably() .build(); }
withIdentity metodu - JobKey
Örnek
Şöyle yaparız
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class DatabaseBackup implements Job {

  @Override
  public void execute(JobExecutionContext context) throws JobExecutionException {
    ...
  }
}

Scheduler scheduler = ...;
String cronExpression = ...;
JobKey jobKey = new JobKey("databasejob", "databasegroup");
JobDetail job = JobBuilder.newJob(DatabaseBackup.class)
  .withIdentity(jobKey)
  .build();

ScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cronExpression);
Trigger trigger = new Trigger()
  .withIdentity("databasetrigger", "databasegroup")
  .startNow()
  .withSchedule(scheduleBuilder)
  .build();

try {
  scheduler.scheduleJob(job, trigger);
  System.out.println(trigger.getKey().getName() + " " + trigger.getNextFireTime());
} catch (SchedulerException ex) {
  ...
}
withIdentity metodu - String + String
Örnek

Şöyle yaparız
JobDetail job = JobBuilder.newJob(MyJob.class)
  .withIdentity("myJobName", "myGroup").build();

Hiç yorum yok:

Yorum Gönder