Wednesday 31 July 2019

Quartz: Scheduler: startDelayed: Delay the execution of scheduler


'org.quartz.Scheduler' interface provides 'startDelayed' method, it is used to delay the execution of scheduler for given number of seconds.

Signature of the method
void startDelayed(int seconds) throws SchedulerException;

Example
// Initiate a Schedule Factory
SchedulerFactory schedulerFactory = new StdSchedulerFactory();

// Retrieve a scheduler from schedule factory
Scheduler scheduler = schedulerFactory.getScheduler();

scheduler.getContext().put("userName", "Krishna");
scheduler.getContext().put("token", "token1234");

// Delay the execution of scheduler for 5 seconds
scheduler.startDelayed(5);

Find the below working example.

HelloJob.java
package com.sample.jobs;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;

public class HelloJob implements Job {
 public void execute(JobExecutionContext jec) throws JobExecutionException {
  String schedulerName = null;
  String schedulerInstanceId = null;

  String userName = null;
  String token = null;

  try {

   Scheduler scheduler = jec.getScheduler();

   schedulerName = scheduler.getSchedulerName();
   schedulerInstanceId = scheduler.getSchedulerInstanceId();

   userName = (String) scheduler.getContext().get("userName");
   token = (String) scheduler.getContext().get("token");

  } catch (SchedulerException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

  System.out.println("**************************************************");
  System.out.println("Hello!!!");
  System.out.println("Job is triggered by scheduler : " + schedulerName);
  System.out.println("Scheduler instance id : " + schedulerInstanceId);
  System.out.println("User name : " + userName);
  System.out.println("Token : " + token);
  System.out.println("**************************************************");
 }
}


QuartzSchedulerEx.java

package com.sample.app;

import java.util.Date;

import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.impl.JobDetailImpl;
import org.quartz.impl.StdSchedulerFactory;
import org.quartz.impl.triggers.SimpleTriggerImpl;

import com.sample.jobs.HelloJob;

public class QuartzSchedulerEx {
 public static void main(String args[]) throws SchedulerException, InterruptedException {

  // Initiate a Schedule Factory
  SchedulerFactory schedulerFactory = new StdSchedulerFactory();

  // Retrieve a scheduler from schedule factory
  Scheduler scheduler = schedulerFactory.getScheduler();

  scheduler.getContext().put("userName", "Krishna");
  scheduler.getContext().put("token", "token1234");

  // Delay the execution of scheduler for 5 seconds
  scheduler.startDelayed(5);

  JobDetailImpl helloJobDetails = new JobDetailImpl();
  helloJobDetails.setName("Hello Job");
  helloJobDetails.setJobClass(HelloJob.class);

  // Creating schedule time with trigger
  SimpleTriggerImpl trigger1 = new SimpleTriggerImpl();
  trigger1.setStartTime(new Date(System.currentTimeMillis() + 500));
  trigger1.setRepeatCount(-1);
  trigger1.setRepeatInterval(3000);
  trigger1.setName("First Trigger");
  trigger1.setPriority(10); // Setting trigger 1 priority to 10

  scheduler.scheduleJob(helloJobDetails, trigger1);
 }
}




Previous                                                    Next                                                    Home

No comments:

Post a Comment