springboot集成quartz实现任务调度

腾飞      2022-04-23     699

关键词:

quartz

概述
  • 特点
    • 强大的调度功能
    • 灵活的应用方式
    • 分布式和集群能力
  • 用到的设计模式
    • Builder 模式
    • factory模式
    • 组件模式
    • 链式写法
  • 体系结构
    • 调度器
    • 任务
    • 触发器
  • 架构图
    • 技术分享图片

      spring boot quartz
  • pom配置
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.2.3</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>5.1.3.RELEASE</version>
        </dependency>
  • 编写job类
package com.ltf.shop.quartzdemo;

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

public class HelloJob implements Job {
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        System.out.println("hello word quartz");
    }
}
  • 编写quartz定义类
package com.ltf.shop.quartzconfig;

import com.ltf.shop.quartzdemo.HelloJob;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.quartz.CronTriggerFactoryBean;
import org.springframework.scheduling.quartz.JobDetailFactoryBean;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;

@Configuration
public class QuartzConfig {
    /**
     * 创建Job对象
     */
    @Bean
    public JobDetailFactoryBean jobDetailFactoryBean()
    {
        JobDetailFactoryBean factory=new JobDetailFactoryBean();
        factory.setJobClass(HelloJob.class);
        return  factory;
    }

    /**
     * 创建Job对象
     */
//    @Bean
//    public SimpleTriggerFactoryBean simpleTriggerFactoryBean(JobDetailFactoryBean jobDetailFactoryBean)
//    {
//        SimpleTriggerFactoryBean simpleTriggerFactoryBean=new SimpleTriggerFactoryBean();
//        //关联JobDetail对象
//        simpleTriggerFactoryBean.setJobDetail(jobDetailFactoryBean.getObject());
//        //设置执行的毫秒数
//        simpleTriggerFactoryBean.setRepeatInterval(3000);
//        simpleTriggerFactoryBean.setRepeatCount(15);
//        return simpleTriggerFactoryBean;
//    }

//    /**
//     * 创建scheduler对象
//     */
//    @Bean
//    public SchedulerFactoryBean schedulerFactoryBean(SimpleTriggerFactoryBean simpleTriggerFactoryBean)
//    {
//        SchedulerFactoryBean schedulerFactoryBean=new SchedulerFactoryBean();
//        schedulerFactoryBean.setTriggers(simpleTriggerFactoryBean.getObject());
//        return schedulerFactoryBean;
//    }


    @Bean
    public CronTriggerFactoryBean cronTriggerFactoryBean(JobDetailFactoryBean jobDetailFactoryBean)
    {
        CronTriggerFactoryBean cronTriggerFactoryBean=new CronTriggerFactoryBean();
        cronTriggerFactoryBean.setJobDetail(jobDetailFactoryBean.getObject());
        cronTriggerFactoryBean.setCronExpression("0/2 * * * * ?");
        return cronTriggerFactoryBean;
    }

    @Bean
    public SchedulerFactoryBean schedulerFactoryBean(CronTriggerFactoryBean cronTriggerFactoryBean)
    {
        SchedulerFactoryBean schedulerFactoryBean=new SchedulerFactoryBean();
        schedulerFactoryBean.setTriggers(cronTriggerFactoryBean.getObject());
        return schedulerFactoryBean;
    }
}

springboot定时任务-什么是elasticjob?如何集成elasticjob实现分布式任务调度?

...ticJob成为ApacheShardingSphere的子项目;本文介绍ElasticJob以及SpringBoot的集成。@pdai知识准备需要对分布式任务的知识体系和Elastic 查看详情

springboot结合xxl-job实现定时任务(代码片段)

...文章工具比MyBatisGenerator更强大的代码生成器ORM框架选型SpringBoot项目基础设施搭建SpringBoot集成Mybatis项目实操SpringBoot集成MybatisPlus项目实操SpringBoot集成SpringDataJPA项目实操数据库变更管理数据库变更管理:LiquibaseorFlywaySpringBoot... 查看详情

springboot入门:集成quartz定时任务

本片文章续《SpringBoot入门(八):集成RabbitMQ消息队列》,关于Quartz定时任务请参考《Quartz的基本使用之入门(2.3.0版本)》springboot实现定时任务,除了集成Quartz外,还可以直接使用scheduler注解。使用1个简单的注解就可以完成... 查看详情

springboot任务调度

参考技术ASpringBoot提供了任务调度功能,可以指定启动服务器立刻执行某些任务逻辑,或指定时间调用某些任务逻辑。SpringBoot提供了ApplicationRunner和CommandLineRunner接口,实现任何一个即可。1.ApplicationRunner2.CommandLineRunner总结:多个... 查看详情

springboot整合quartz实现动态的创建或删除定时任务并将定时调度任务持久化到mysql以及quartz集群配置(代码片段)

1.创建quartz数据库并导入quartz的SQL脚本文件quartz源码下载地址:http://www.quartz-scheduler.org/downloads/下载完成后解压,在/src/org/quartz/impl/jdbcjobstore可以找到对应数据库的SQL脚本我这里使用的是MySQL数据库,SQL脚本如下:... 查看详情

springboot整合quartz实现动态的创建或删除定时任务并将定时调度任务持久化到mysql以及quartz集群配置(代码片段)

1.创建quartz数据库并导入quartz的SQL脚本文件quartz源码下载地址:http://www.quartz-scheduler.org/downloads/下载完成后解压,在/src/org/quartz/impl/jdbcjobstore可以找到对应数据库的SQL脚本我这里使用的是MySQL数据库,SQL脚本如下:... 查看详情

springboot技术专题「开发实战系列」动态化quartz任务调度机制+实时推送任务数据到前端(代码片段)

前提介绍SpringBoot2.0整合quartz实现多定时任务动态配置,实现任务增删改,生成Cron表达式动态化任务调度添加依赖包<!--quartz--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boo 查看详情

springboot整合quartz

参考技术A写在前面:本项目环境springboot+springdatajpaQuartz核心概念:Job表示一个工作,要执行的具体内容。此接口中只有一个方法,如下:voidexecute(JobExecutionContextcontext)JobDetail表示一个具体的可执行的调度程序,Job是这个可执行... 查看详情

springboot整合quartz实现动态的创建或删除定时任务并将定时调度任务持久化到mysql以及quartz集群配置(代码片段)

1.创建quartz数据库并导入quartz的SQL脚本文件quartz源码下载地址:http://www.quartz-scheduler.org/downloads/下载完成后解压,在/src/org/quartz/impl/jdbcjobstore可以找到对应数据库的SQL脚本我这里使用的是MySQL数据库,SQL脚本如下:... 查看详情

springboot集成quartz动态定时任务

SpringBoot自带schedule沿用的springboot少xml配置的优良传统,本身支持表达式等多种定时任务注意在程序启动的时候加上@EnableScheduling@Scheduled(cron="0/5****?")publicvoidjob()System.out.println("每五秒执行一次");为什么要... 查看详情

springboot集成quartz集群(代码片段)

为什么要使用Quzrtz集群  在项目进行集群部署时,如果业务在执行中存在互斥关系,没有对定时任务进行统一管理,就会引起业务的多次执行,不能满足业务要求。这时就需要对任务进行管理,要保证一笔业务在所有的集群环... 查看详情

分布式定时任务调度框架-quartz学习及实战记录笔记

...系3.Trigger触发器的介绍4.Quartz配置资源介绍5.Quartz监听器6.SpringBoot整合Quartz实现动态的创建或删除定时任务并将定时调度任务持久化到MySQL以及Quartz集群配置7.分布式定时任务调度框架学习与实战记录完整篇 查看详情

分布式定时任务调度框架-quartz学习及实战记录笔记

...系3.Trigger触发器的介绍4.Quartz配置资源介绍5.Quartz监听器6.SpringBoot整合Quartz实现动态的创建或删除定时任务并将定时调度任务持久化到MySQL以及Quartz集群配置7.分布式定时任务调度框架学习与实战记录完整篇 查看详情

springboot应用系列6--springboot2整合quartz

...bsp;Scheduler(调度器):负责Job的执行。有两种方式可以实现SpringBoot与Quartz的整合:一、使用Spring 查看详情

springboot集成quartz动态定时任务

SpringBoot自带schedule沿用的springboot少xml配置的优良传统,本身支持表达式等多种定时任务注意在程序启动的时候加上@EnableScheduling@Scheduled(cron="0/5****?")publicvoidjob()System.out.println("每五秒执行一次");为什么要... 查看详情

springboot整合quartz

1、创建    一、SpringBoot整合Quartz引入SpringBoot的基础依赖   1、引入依赖     2、编写简单任务类 3、创建任务调度类  4、创建任务调度方法  5、编写触发方式 fixedDe... 查看详情

springboot集成quartz开始正常执行,一段时间后任务不执行

参考技术APS:最近项目需要定时进行数据汇总,引入了Quartz之后发现,开始的时候任务可以执行,一段时间后后台看不到报错,但是任务却不执行。 查看详情

spring中使用quartz实现任务调度

 前言:Spring中使用Quartz有两种方式,一种是继承特定的基类:org.springframework.scheduling.quartz.QuartzJobBean,另一种则不需要,(推荐使用第二种)。下面分别介绍。1、作业类继承 org.springframework.scheduling.quartz.QuartzJobBean第一... 查看详情