springboot 整合quartz (一):基础使用


layout: blog
istop: true
title: “springboot 整合quartz (一):基础使用”
date: 2018-10-09
category: springboot
tags:

  • springboot
  • quartz

介绍

Quartz是一个开源的作业调度框架,它完全由Java写成。它有很多特征,如:数据库支持,集群,插件,EJB作业预构 建,JavaMail及其它,支持cron-like表达式等等。该项目已经被 Terracotta收购。

Quartz API 介绍

Quartz API关键几个接口如下:

接口类对象:

  • Scheduler:跟任务调度相关的最主要的API接口。
  • Job:你期望任务调度执行的组件定义(调度器执行的内容),都必须实现该接口。
  • Trigger:定义一个指定的Job何时被执行的组件,也叫触发器。

用于创建示例的对象:

  • JobDetail:用来定义Job的实例。
  • JobBuilder:用来定义或创建JobDetail的实例,JobDetail限定了只能是Job的实例。
  • TriggerBuilder:用来定义或创建触发器的实例。

环境

  • idea
  • maven
  • springboot

案例

入门案例-1

说多少也不如直接运行代码出结果来的实际,?那就动手了。

pom.xml 配置如下:

 <!-- quartz -->
    <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz</artifactId>
    </dependency>
    <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz-jobs</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>5.0.7.RELEASE</version>
    </dependency>

job类

@Data
public class HelloJob implements Job {

    public void execute(JobExecutionContext context) throws JobExecutionException {
        JobDataMap jobDataMap = context.getJobDetail().getJobDataMap();
        String name = jobDataMap.get("name").toString();
        String characteristic = jobDataMap.get("characteristic").toString();

        System.out.println("name : " + name);
        System.out.println("characteristic : " + characteristic);

    }
}

QuartzTest类

public class QuartzTest {

    public static void main(String[] args) throws SchedulerException, ParseException {
        SchedulerFactory schedulerFactory = new StdSchedulerFactory();
        Scheduler scheduler = schedulerFactory.getScheduler();
        scheduler.start();

        // 定义job,绑定我们的定时任务
        JobDetail job2 = newJob(HelloJob.class)
                .usingJobData("name", "张三")
                .usingJobData("characteristic", "帅3")
                .build();

        // 执行任务,用定义好的触发器 和 任务
        scheduler.scheduleJob(job2, getTrigger6());

    }

    /**
     * 触发器立即触发,然后每隔2秒 触发一次,22:55:00:
     */
    private static Trigger getTrigger1() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

        //定义一个任务触发器
        return newTrigger()
                .withIdentity("job2", "group2")
                //定点触发
                //.startAt(sdf.parse("2018-09-27 10:27:00"))
                // 五秒钟后触发
                .startAt(DateBuilder.futureDate(5, DateBuilder.IntervalUnit.SECOND))
                .withSchedule(simpleSchedule()
                        .withIntervalInSeconds(2)
                        .repeatForever())
                //.withRepeatCount(0))
                .endAt(DateBuilder.dateOf(22, 55, 0))
                .build();
    }

运行测试类,结果如下:(恭喜你,?成功,接下来,就是深入学习了)

10:29:11.012 [MyOneQuartzScheduler_Worker-1] DEBUG org.quartz.core.JobRunShell - Calling execute on job DEFAULT.6da64b5bd2ee-f1562ba3-b8fa-436d-848e-d6e8ea39c26d
name : 张三
characteristic : 帅3

源码地址

github地址

参考文档

quartz中文文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值