当前位置:网站首页>Learning and using quartz scheduling framework

Learning and using quartz scheduling framework

2022-06-23 07:11:00 From meow star

Quartz Learning and using scheduling framework

Relatively complete blog:

https://blog.csdn.net/ScholarTang/article/details/118891297

introduction 1 (SimpleTrigger trigger )

  • Add dependency configuration
<dependency>
  <groupId>org.quartz-scheduler</groupId>
  <artifactId>quartz</artifactId>
  <version>2.3.0</version>
</dependency>

<dependency>
  <groupId>org.quartz-scheduler</groupId>
  <artifactId>quartz-jobs</artifactId>
  <version>2.3.0</version>
</dependency>

<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
</dependency>
  • Create a class , Realization Job Interface , Realization execute Method
  • Create scheduler Scheduler
  • Use Job Implementation classes create task instances JobDetail
  • Create trigger Trigger, It uses SimpleTrigger trigger
  • Bind task instance JobDetail And triggers Trigger
  • Turn on timed tasks
  • Specific code :
@Slf4j
//@PersistJobDataAfterExecution //Job Set to stateful 
public class HelloJob implements Job {
    
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
    
        JobDataMap mergedJobDataMap = jobExecutionContext.getMergedJobDataMap();
        log.info(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date()) + " |  The mission was carried out ");
    }
}
public class HelloSchedulerDemo {
    
    public static void main(String[] args) throws SchedulerException {
    
        // Get the scheduler instance from the scheduling factory 
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
        // adopt JobBuilder Build a task instance 
        JobDetail jobDetail = JobBuilder.newJob(HelloJob.class)
                // Set the unique instance name and task group name of the task 
                .withIdentity("job1", "group1")
                // Build instance 
                .build();
        // adopt TriggerBuilder Instance building triggers 
        SimpleTrigger trigger = TriggerBuilder.newTrigger()
                // Set the unique instance name of the trigger and the group name of the trigger 
                .withIdentity("trigger1", "group1")
                // Implementation plan , Every five seconds 
                .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(5))
                // Execute now 
                .startNow()
                // Build instance 
                .build();
        // The scheduler binds task instances and triggers 
        scheduler.scheduleJob(jobDetail,trigger);
        // Turn on timed tasks 
        scheduler.start();
    }
}

introduction 2 (CronTrigger trigger )

  • Create a class , Realization Job Interface , Realization execute Method
  • Create scheduler Scheduler
  • Use Job Implementation classes create task instances JobDetail
  • Create trigger Trigger, It uses CronTrigger trigger , Support Cron expression
  • Bind task instance JobDetail And triggers Trigger
  • Turn on timed tasks
  • Specific code
public class HelloSchedulerDemo {
    
    public static void main(String[] args) throws SchedulerException {
    
        // Get the scheduler instance from the scheduling factory 
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
        // adopt JobBuilder Build a task instance 
        JobDetail jobDetail = JobBuilder.newJob(HelloJob.class)
                // Set the unique instance name and task group name of the task 
                .withIdentity("job1", "group1")
                // Build instance 
                .build();
        // adopt TriggerBuilder Instance building triggers 
        Trigger trigger = TriggerBuilder.newTrigger()
                // Set the unique instance name of the trigger and the group name of the trigger 
                .withIdentity("trigger1", "group1")
                // Implementation plan , Every five seconds 
                .withSchedule(CronScheduleBuilder.cronSchedule("*/5 * * * * ? *"))
                // Build instance 
                .build();
        // The scheduler binds task instances and triggers 
        scheduler.scheduleJob(jobDetail,trigger);
        // Turn on timed tasks 
        scheduler.start();
    }
}

quartz The use of listeners in

Mainly used JobListener、TriggerListener、SchedulerListener Listen to the status in the task

  • Create a class , Realization Job Interface , Realization execute Method
  • Create a class , Implement the global listener interface JobListener
  • Create scheduler Scheduler object
  • Use Job Implementation classes create task instances JobDetail object
  • Create trigger Trigger object , It uses CronTrigger trigger , Support Cron expression
  • Bind task instance JobDetail And triggers Trigger, Bind task instances and listeners JobListener
  • Turn on timed tasks
  • Specific code

Job Implementation class :

@Slf4j
//@PersistJobDataAfterExecution //Job Set to stateful 
public class HelloJob implements Job {
    
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
    
        JobDataMap mergedJobDataMap = jobExecutionContext.getMergedJobDataMap();
        log.info("[Job Executive class ]"+new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date()) + " |  The mission was carried out ");
    }
}

JobListener Implementation class :

@Slf4j
public class MyJobListener implements JobListener {
    
    @Override
    public String getName() {
    
        String name = this.getClass().getSimpleName();
        log.info("[ Monitor ] At present JobListener For the name of the :" + name);
        return name;
    }

    @Override
    public void jobToBeExecuted(JobExecutionContext context) {
    
        String name = context.getJobDetail().getJobClass().getName();
        log.info("[ Monitor ] At present Job For the name of the :" + name + ",JobDetail Will be carried out ...");
    }

    @Override
    public void jobExecutionVetoed(JobExecutionContext context) {
    
        String name = context.getJobDetail().getJobClass().getName();
        log.info("[ Monitor ] At present Job For the name of the :" + name + ",JobDetail To be executed , But being TriggerListener veto ...");
    }

    @Override
    public void jobWasExecuted(JobExecutionContext context, JobExecutionException jobException) {
    
        String name = context.getJobDetail().getJobClass().getName();
        log.info("[ Monitor ] At present Job For the name of the :" + name + ",JobDetail Execution completed ...");
    }
}

Task startup class :

public class HelloSchedulerDemo {
    
    public static void main(String[] args) throws SchedulerException {
    
        // Get the scheduler instance from the scheduling factory 
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
        // adopt JobBuilder Build a task instance 
        JobDetail jobDetail = JobBuilder.newJob(HelloJob.class)
                // Set the unique instance name and task group name of the task 
                .withIdentity("job1", "group1")
                // Build instance 
                .build();
        // adopt TriggerBuilder Instance building triggers 
        Trigger trigger = TriggerBuilder.newTrigger()
                // Set the unique instance name of the trigger and the group name of the trigger 
                .withIdentity("trigger1", "group1")
                // Implementation plan , Every five seconds 
                .withSchedule(CronScheduleBuilder.cronSchedule("*/5 * * * * ? *"))
                // Build instance 
                .build();
        // The scheduler binds task instances and triggers 
        scheduler.scheduleJob(jobDetail,trigger);
        scheduler.getListenerManager().addJobListener(new MyJobListener(), KeyMatcher
                //jobKey Medium name Parameters and group The parameter corresponds to the task instance 【JobDetail】 Of name and group
                .keyEquals(JobKey.jobKey("job1","group1")));
        // Turn on timed tasks 
        scheduler.start();
    }
}

 Insert picture description here
Other listeners are TriggerListener、SchedulerListener

原网站

版权声明
本文为[From meow star]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/174/202206230619423584.html