SpringBoot整合Quartz定时器框架

简介:
在百度百科介绍:
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目
Quartz是一个完全由java编写的开源作业调度框架。不要让作业调度这个术语吓着你。尽管Quartz框架整合了许多额外功能, 但就其简易形式看,你会发现它易用得简直让人受不了!简单地创建一个实现org.quartz.Job接口的java类。Job接口包含唯一的方法:

我感觉就是人物定时器,方便我们执行一些动态却要定时执行的业务逻辑,比如说我一个秒杀需要在某时某分去开启抢购 就可拿这个Quartz去做。
时间表达式:
SpringBoot整合Quartz定时器框架_第1张图片
在线解析

https://cron.qqe2.com/

SpringBoot整合Quartz定时器框架_第2张图片

Quartz的使用

job 是任务 作业
Trigger 是触发器 
schedur  任务调度  调度工厂

boot整合Quartz需要的依赖

  
        
            org.springframework
            spring-tx
        
        
        
            org.springframework
            spring-context-support
        
        
            org.quartz-scheduler
            quartz
            2.2.1
        

创建一个boot项目把上面的依赖放到pom里面
SpringBoot整合Quartz定时器框架_第3张图片在boot项目中创建Quartz的配置类

package com.tangsir.tangquartz.config;

import com.tangsir.tangquartz.task.QuartzTask;
import org.quartz.JobDetail;
import org.quartz.Trigger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.quartz.CronTriggerFactoryBean;
import org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import org.springframework.stereotype.Controller;

@Configuration
public class QuartzConfiguration {
    /**
     *  配置任务
     * @param quartzTask
     * @return
     */
    @Bean(name = "reptilianJob")
    public MethodInvokingJobDetailFactoryBean detailFactoryBean(QuartzTask quartzTask) {

        MethodInvokingJobDetailFactoryBean jobDetail = new MethodInvokingJobDetailFactoryBean();

        // 是否并发执行
        jobDetail.setConcurrent(false);

        // 设置任务的名字
        jobDetail.setName("reptilianJob");

        // 设置任务的分组,在多任务的时候使用
        jobDetail.setGroup("reptilianJobGroup");

        // 需要执行的对象
        jobDetail.setTargetObject(quartzTask);

        /*
         * 
         * 执行QuartzTask类中的需要执行方法
         */
        jobDetail.setTargetMethod("test");
        return jobDetail;
    }

    /**
     * 定时触发器
     * @param reptilianJob 任务
     * @return
     */
    @Bean(name = "jobTrigger")
    public CronTriggerFactoryBean cronJobTrigger(JobDetail reptilianJob){

        CronTriggerFactoryBean tigger = new CronTriggerFactoryBean();

        tigger.setJobDetail(reptilianJob);

        //cron表达式,每1分钟执行一次
        tigger.setCronExpression("0/1 * * *  *  ?");
        tigger.setName("reptilianTrigger");
        return tigger;
    }

    /**
     * 调度工厂
     * @param jobTrigger 触发器
     * @return
     */
    @Bean(name = "scheduler")
    public SchedulerFactoryBean schedulerFactory(Trigger jobTrigger) {

        SchedulerFactoryBean factoryBean = new SchedulerFactoryBean();

        // 用于quartz集群,QuartzScheduler 启动时更新己存在的Job
        factoryBean.setOverwriteExistingJobs(true);

        // 延时启动,应用启动1秒后
        factoryBean.setStartupDelay(1);

        // 注册触发器
        factoryBean.setTriggers(jobTrigger);
        return factoryBean;
    }

}




调用

package com.tangsir.tangquartz.task;

import org.springframework.stereotype.Service;

import java.util.Date;

@Service
public class QuartzTask {

    /**
     * 业务逻辑
     */
      void test(){
        System.out.println("我来调用来了:"+new Date());
    }


}

这里就是一秒调一次
SpringBoot整合Quartz定时器框架_第4张图片

你可能感兴趣的:(Quartz,SpringBoot,java)