quartz的简单使用、SpringBoot使用和自定义数据源集成

本文介绍了Quartz的原理和基本组件,包括Scheduler、Job和Trigger。在实战部分,详细阐述了Quartz的基本使用,如何在SpringBoot中配置并使用Quartz,以及如何在使用自定义数据源时集成Quartz,解决了SpringBoot中配置Quartz时可能出现的问题。
摘要由CSDN通过智能技术生成

一、quartz的基本认识

1. 什么是quartz

        从quartz的官网可首页可以看到对quartz的简单介绍,下面翻译成中文,大概就是这样:        

        Quartz是一个功能丰富的开源作业调度库,几乎可以集成到任何Java应用程序中——从最小的独立应用程序到最大的电子商务系统。Quartz可用于创建简单或复杂的时间表,以执行数十个、数百个甚至数万个作业;其任务被定义为标准Java组件的作业,这些组件可以执行几乎任何您可以对其进行编程的操作。Quartz调度器包括许多企业级功能,例如支持JTA事务和集群。

2. quartz的基本组件

                 从上图可以看出,quartz主要包含了3个基本组件:Scheduler、Job和Trigger,其中, Job部分包含了组件Job、JobDetail和JobBuilder,Trigger部分包含了Trigger和TriggerBuilder。

        一个设计良好的组件或者框架,必然会遵守组件的职责区分,单一职责原则是面向对象的一个重要特性,不仅在编码中需要注意,在组件或者框架的设计中也必然需要考虑到这一点。

        首先是Job。Job从字面意思上理解,就是一项工作或者任务,也就是定时任务的“任务”具体需要做什么,在quartz中,Job是一个接口,且只定义了一个方法execut(),把任务需要处理的逻辑写在execute方法中。同时我们需要注意的一点是,Job是无状态的,也就是Job是可以复用的,那么Job需要的信息从哪里来呢?答案是从JobDetail中获取,JobDetail有一个重要的方法getJobDataMap(),调用这个方法可以获取到任务需要的相关信息,当然这些信息一般是创建Job的时候设定的。现在引申出另外一个问题,那就是如何创建一个Job?一想到创建,我们肯定会想到建造者模式,quartz就使用JobBuilder来创建Job,并设定Job需要的相关信息。

        然后看Trigger。我们定义完任务之后,那么什么时候触发呢?所以我们需要一个“任务触发器”,来定时触发Job。比如:每多少分钟执行一次,或者根据cron表达式来定时执行等等。那么TriggerBuilder就是用来协助创建Trigger的类。

        最后是Scheduler。现在任务和触发器都有了,那么谁来调度呢?这时候就需要一个调度器了,调度器负责协调任务和触发器,当触发任务时,把上下文传递给具体的任务,任务拿到上下文,执行任务。

二、quartz实战

1. quartz的基本使用

public class SimpleQuartzTest {

    public static void main(String[] args) throws Exception{
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
        scheduler.start();

        JobDetail jobDetail = JobBuilder.newJob(MySimpleJob.class)
                .withIdentity("myJob", "myGroup")
                .usingJob
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值