springboot整合quartz入门(一)

1、quartz中的组件介绍

①、Scheduler:quartz的主要API,通过它控制quartz下面的组件

②、job:任务接口,通过实现该接口可以自定义需要定时执行任务

③、jobDetail:具体Job实例,需要name和group生成job的唯一key,scheduler通过该key控制任务的暂停、运行、删除等操作。

④、Trigger:触发器,用来定义任务的执行计划。

  • SimpleTrigger:可以配置任务的开始时间、结束时间、重复次数以及重复的间隔。

  • CronTrigger: 通过cron表达式来定义执行计划。

⑤、JobBuilder :用于定义/构建JobDetail实例。

⑥、TriggerBuilder: 用于定义/构建触发器实例。

 

2、helloworld

①、创建springboot项目

maven中引入坐标:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>

②、配置application.yml

spring:
  quartz:
    auto-startup: true
    overwrite-existing-jobs: true
    properties: 
      org: 
        quartz: 
          #ID设置为自动获取 每一个必须不同 (所有调度器实例中是唯一的)
          scheduler: 
            instanceId: AUTO
            instanceName: clusteredScheduler
          #ThreadPool实现的类名
          threadPool: 
            class: org.quartz.simpl.SimpleThreadPool
            #ThreadPool配置线程守护进程
            makeThreadsDaemons: true
            #线程数量
            threadCount: 20
            #线程优先级
            threadPriority: 5

③、实现job接口,创建执行任务

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

public class TestJob implements Job {

	@Override
	public void execute(JobExecutionContext context) throws JobExecutionException {
		System.out.println("任务执行了");
	}

}

④、执行任务

import com.study.config.TestJob;

@RestController
public class TestQuartzController {
	//直接注入quartz任务调度器
	@Autowired
	private Scheduler scheduler;
	
	@GetMapping("/test")
	public String test() throws Exception {
		 // 通过JobBuilder构建JobDetail实例,JobDetail规定只能是实现Job接口的实例
        // JobDetail 是具体Job实例
        JobDetail jobDetail = JobBuilder.newJob(TestJob.class).withIdentity("job1", "group1").build();
        
        // 基于表达式构建触发器
        CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("0/3 * * * * ?");
        // CronTrigger表达式触发器 继承于Trigger
        // TriggerBuilder 用于构建触发器实例
        CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity("job1", "group1")
                .withSchedule(cronScheduleBuilder).build();
        scheduler.scheduleJob(jobDetail, cronTrigger);
        
        scheduler.start();
		return "success";
	}
}

⑤、测试

启动项目之后在浏览器中输入:http://127.0.0.1:8080/test,可以看到后台会持续打印 “任务执行了。。。”

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页