JobKey is used to uniquely identify a JobDetail.
How to compose the keys?
Keys can be composed using two fields.
a. Name of the key
b. Group: Name of the key must be unique in the group
If only a name is specified then the default group name will be used.
Example
Jobkey jobKey = new JobKey(JOB_NAME, GROUP_NAME);
This job key is used to
a. Uniquely identify a job
b. Pause a job
c. Resume the job
d. Update the job
How to set a job key?
jobDetail.setKey(new JobKey(JOB_KEY));
How to pause a job?
scheduler.pauseJob(new JobKey(JOB_KEY));
How to resume the job?
scheduler.resumeJob(new JobKey(JOB_KEY));
How to update the job?
jobDetail.setKey(new JobKey(JOB_KEY));
scheduler.addJob(jobDetail, true);
Since I set the second argument to true, it replaces the job that matchis to this jobkey.
How to delete the job?
scheduler.deleteJob(new JobKey(JOB_KEY));
Find the below working application.
App.java
package com.sample.app;
import java.text.ParseException;
import java.util.Date;
import java.util.concurrent.TimeUnit;
import org.quartz.JobKey;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.TriggerKey;
import org.quartz.impl.JobDetailImpl;
import org.quartz.impl.StdSchedulerFactory;
import org.quartz.impl.triggers.CronTriggerImpl;
import com.sample.app.jobs.HelloJob;
import com.sample.app.jobs.TimerJob;
public class App {
private static final String JOB_KEY = "My_Timer_Job";
public static void main(String args[]) throws ParseException, SchedulerException, InterruptedException {
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
JobDetailImpl jobDetail = new JobDetailImpl();
jobDetail.setName("First Job");
jobDetail.setJobClass(TimerJob.class);
jobDetail.setDescription("Simple Task Application");
jobDetail.setRequestsRecovery(true);
jobDetail.setDurability(true);
jobDetail.setKey(new JobKey(JOB_KEY));
CronTriggerImpl cronTrigger = new CronTriggerImpl();
cronTrigger.setStartTime(new Date(System.currentTimeMillis() + 1000));
cronTrigger.setCronExpression("0/3 * * * * ?");
cronTrigger.setName("FirstTrigger");
cronTrigger.setDescription("Simple Trigger");
cronTrigger.setKey(new TriggerKey("Trigger1"));
scheduler.start();
scheduler.scheduleJob(jobDetail, cronTrigger);
TimeUnit.SECONDS.sleep(6);
System.out.println("\nPausing job for 6 seconds");
scheduler.pauseJob(new JobKey(JOB_KEY));
TimeUnit.SECONDS.sleep(20);
System.out.println("\nResuming job");
scheduler.resumeJob(new JobKey(JOB_KEY));
// Update the job
System.out.println("\nUpdating timer job with hello job");
jobDetail = new JobDetailImpl();
jobDetail.setName("First Job");
jobDetail.setJobClass(HelloJob.class);
jobDetail.setDescription("Simple Task Application");
jobDetail.setRequestsRecovery(true);
jobDetail.setDurability(true);
jobDetail.setKey(new JobKey(JOB_KEY));
scheduler.addJob(jobDetail, true);
TimeUnit.SECONDS.sleep(10);
System.out.println("\nDeleting the job");
scheduler.deleteJob(new JobKey(JOB_KEY));
}
}
Output
Thu Mar 04 14:01:09 IST 2021 Thu Mar 04 14:01:12 IST 2021 Pausing job for 6 seconds Resuming job Updating timer job with hello job Thu Mar 04 14:01:33 IST 2021 Hello How are you!!!! Hello How are you!!!! Hello How are you!!!! Hello How are you!!!! Hello How are you!!!! Hello How are you!!!! Hello How are you!!!! Hello How are you!!!! Hello How are you!!!! Deleting the job
Previous Next Home
No comments:
Post a Comment