Quartz入门

【Quartz】Quartz定时任务框架 Quartz是一个框架,是SpringBoot御用的定时任务框架,有三大核心部分组成,分别是JobTriggerScheduler。Job:任务,可以理解成你要做什么事,具体要执行的业务逻辑,比如:发送短信、同步数据、发送邮件等。Trigger:触发器,可以理解成你什么时候去做,用来定义Job触发条件、触发时间、触发间隔、终止时间等。Scheduler:调度器,可以理解成你什么时候要去做什么事,它会启动Trigger去执行Job。/*** @author : 黎剑。 阅读详情

1.quartz的应用场景大致分为两类

定时定点完成某一操作(数据库操作)
遵循某一规律,循环执行某一操作

2. Quartz介绍

任务调度框架“Quartz”是OpenSymphony开源组织在Job scheduling领域又一个开源项目,是完全由java开发的一个开源的任务日程管理系统,
“任务进度管理器”就是一个在预先确定(被纳入日程)的时间到达时,负责执行(或者通知)其他软件组件的系统。

简单来说就是实现“计划(或定时)任务”的系统,例如:订单下单后未付款,15分钟后自动撤消订单,并自动解锁锁定的商品

3. Quartz的触发器

触发器用来告诉调度程序作业什么时候触发。框架提供了5种触发器类型,但两个最常用的SimpleTrigger和CronTrigger。

五种类型的Trigger(定时器)
SimpleTrigger,CronTirgger,DateIntervalTrigger,NthIncludedDayTrigger和Calendar类( org.quartz.Calendar)。

场景:
SimpleTrigger:执行N次,重复N次
CronTrigger:几秒 几分 几时 哪日 哪月 哪周 哪年,执行

4. 存储方式

RAMJobStore(内存作业存储类型)和JDBCJobStore(数据库作业存储类型),两种方式对比如下:

            优点                                    缺点

RAMJobStore 不要外部数据库,配置容易,运行速度快 因为调度程序信息是存储在被分配给JVM的内存里面,
所以,当应用程序停止运行时,所有调度信息将被丢失。
另外因为存储到JVM内存里面,所以可以存储多少个Job和Trigger将会受到限制

JDBCJobStor 支持集群,因为所有的任务信息都会保存 运行速度的快慢取决与连接数据库的快慢
到数据库中,可以控制事物,还有就是如
果应用服务器关闭或者重启,任务信息都
不会丢失,并且可以恢复因服务器关闭或
者重启而导致执行失败的任务

quartz工作流程
在这里插入图片描述

5. quartz相关表达式

在这里插入图片描述
在这里插入图片描述
在线生成表达式网址:http://cron.qqe2.com/

6. JDBCJobStor存储中表关系和说明

在这里插入图片描述
在这里插入图片描述

7. 核心类和核心类之间关系

7.1 QuartzSchedulerThread

负责执行向QuartzScheduler注册的触发Trigger的工作的线程。

7.2 ThreadPool

Scheduler使用一个线程池作为任务运行的基础设施,任务通过共享线程池中的线程提供运行效率。

7.3 QuartzSchedulerResources

包含创建QuartzScheduler实例所需的所有资源(JobStore,ThreadPool等)。

7.4 SchedulerFactory

提供用于获取调度程序实例的客户端可用句柄的机制。

7.5 JobStore

通过类实现的接口,这些类要为org.quartz.core.QuartzScheduler的使用提供一个org.quartz.Job和org.quartz.Trigger存储机制。
作业和触发器的存储应该以其名称和组的组合为唯一性。

7.6 QuartzScheduler

这是Quartz的核心,它是org.quartz.Scheduler接口的间接实现,包含调度org.quartz.Jobs,注册org.quartz.JobListener实例等的方法。

7.7 Scheduler

这是Quartz Scheduler的主要接口,代表一个独立运行容器。调度程序维护JobDetails和触发器的注册表。
一旦注册,调度程序负责执行作业,当他们的相关联的触发器触发(当他们的预定时间到达时)。

7.8 Trigger
具有所有触发器通用属性的基本接口,描述了job执行的时间出发规则。 - 使用TriggerBuilder实例化实际触发器。

7.9 JobDetail

传递给定作业实例的详细信息属性。 JobDetails将使用JobBuilder创建/定义。

1.jobname+jobgroup=primary key identity
2.jobdetail每执行一次都会新建一个job实例

   XxxJob/XxxTask

7.10 Job:

要由表示要执行的“作业”的类实现的接口。只有一个方法
void execute(jobExecutionContext context)
(jobExecutionContext 提供调度上下文各种信息,运行时数据保存在jobDataMap中)

Job有个子接口StatefulJob ,代表有状态任务。
有状态任务不可并发,前次任务没有执行完,后面任务处于阻塞等待

jobName+groupName=primary key
注1:这里面最最重要的接口是Scheduler接口。它提供了简单的操作,例如:将任务纳入日程或者从日程中取消,开始/停止/暂停日程进度。
翻译:Scheduler的中文是:“调度程序,日程安排程序”

8.配置文件quartz.properties

内容分如下几个部分
Quartz Schedular主配置、ThreadPool设置、JobStore配置、DataSources、JDBC-JobStore群集

9.JDBC插入表顺序

Simple_trigger :插入顺序
qrtz_job_details —> qrtz_triggers —> qrtz_simple_triggers
qrtz_fired_triggers

Cron_Trigger:插入顺序
qrtz_job_details —> qrtz_triggers —> qrtz_cron_triggers
qrtz_fired_triggers

10.Quartz简单触发器( SimpleTrigge)

先导入pom依赖

 <!--aspects-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
        </dependency>
        <!--quartz-->
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz-jobs</artifactId>
            <version>2.2.1</version>
        </dependency>

案例:
RamJob

package com.hsl.quartz01.job;

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

/**
 * @author water
 * @site www.water.com
 * @company xxx公司
 * @create 2020-01-03 20:26
 */
public class RamJob implements Job {
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        System.err.println("定时任务启动时会执行的代码块!!!");

    }
}

Demo1

package com.hsl.quartz01.demo;

import com.hsl.quartz01.job.RamJob;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;


/**
 * @author water
 * @site www.water.com
 * @company xxx公司
 * @create 2020-01-03 20:18
 */
public class Demo1 {
    public static void main(String[] args) throws Exception {
        //调度器工厂
        StdSchedulerFactory stdSchedulerFactory = new StdSchedulerFactory();
        Scheduler scheduler = stdSchedulerFactory.getScheduler();
        JobDetail jobDetail = JobBuilder.newJob(RamJob.class).withIdentity("job1", "grouup1").withIdentity("这是我们的一个定时任务案例").build();
        //触发器(存放定时任务执行规则)
        Trigger trigger = (Trigger) TriggerBuilder.newTrigger().withSchedule(SimpleScheduleBuilder.repeatSecondlyForTotalCount(3, 6))//定时任务每六秒执行一次,一共执行三次
                .withIdentity("trigger1", "group1").withDescription("这是我们的一个触发器").build();
        //把作业类与触发器组装
        scheduler.scheduleJob(jobDetail, trigger);
        //启动定时任务
        scheduler.start();
    }
}

结果
在这里插入图片描述

11.Quartz表达式触发器(CronTirgger)

案例:
Demo2

package com.hsl.quartz01.demo;

import com.hsl.quartz01.job.RamJob;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;


/**
 * @author water
 * @site www.water.com
 * @company xxx公司
 * @create 2020-01-03 20:18
 */
public class Demo2 {
    public static void main(String[] args) throws Exception {
        //调度器工厂
        StdSchedulerFactory stdSchedulerFactory = new StdSchedulerFactory();
        Scheduler scheduler = stdSchedulerFactory.getScheduler();
        JobDetail jobDetail = JobBuilder.newJob(RamJob.class).withIdentity("job2", "group2").withIdentity("这是我们的一个定时任务案例").build();
        //触发器(存放定时任务执行规则)
       
        Trigger trigger = (Trigger) TriggerBuilder.newTrigger()
//                .withSchedule(CronScheduleBuilder.cronSchedule("5/3 * * * * ?")) //从第五秒开始每三秒执行一次,无上限
                .withSchedule(CronScheduleBuilder.cronSchedule("0 58 20 * * ?"))//在20:58时执行此任务
//                .withSchedule(CronScheduleBuilder.cronSchedule("0/10 * * * * ?"))//每十秒执行一次
                .withIdentity("trigger2", "group2").withDescription("这是我们的一个触发器").build();
        //把作业类与触发器组装
        scheduler.scheduleJob(jobDetail, trigger);
        //启动定时任务
        scheduler.start();
    }
}

结果:

从第五秒开始每三秒执行一次,无上限
在这里插入图片描述
在20:58时执行此任务
在这里插入图片描述

12.Spring task Vs Quartz

Spring task
优点:无需整合spring,作业类中就可以调用业务service
缺点:单线程;不能做数据存储型的定时任务

案例:体现缺点
SpringTask

package com.hsl.quartz01.task;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author water
 * @site www.water.com
 * @company xxx公司
 * @create 2020-01-03 21:01
 */
@Service
public class SpringTask {
    @Scheduled(cron="0/10 * * * * ?")
    public void task(){
        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.err.println(simpleDateFormat.format(new Date())+"这是 spring task");

        try {
            Thread.sleep(20*1000);
            System.out.println("模拟大数据");
        }catch (Exception e){
            e.printStackTrace();
        }

    }

}

Quartz01Application

package com.hsl.quartz01;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;

@EnableScheduling
@SpringBootApplication
public class Quartz01Application {

    public static void main(String[] args) {
        SpringApplication.run(Quartz01Application.class, args);
    }

}

结果:
在这里插入图片描述

Quartz
优点:多线程;可以做数据存储型的定时任务,维护性高;
缺点:需要整合spring,不能直接调用业务层service;

案例:体现优点

RamJob

package com.hsl.quartz01.job;

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

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author water
 * @site www.water.com
 * @company xxx公司
 * @create 2020-01-03 20:26
 */
public class RamJob implements Job {
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
//        System.err.println("定时任务启动时会执行的代码块!!!");
        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.err.println(simpleDateFormat.format(new Date())+"这是 quartz");

        try {
            Thread.sleep(20*1000);
            System.out.println("模拟大数据");
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

Demo2

package com.hsl.quartz01.demo;

import com.hsl.quartz01.job.RamJob;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;


/**
 * @author water
 * @site www.water.com
 * @company xxx公司
 * @create 2020-01-03 20:18
 */
public class Demo2 {
    public static void main(String[] args) throws Exception {
        //调度器工厂
        StdSchedulerFactory stdSchedulerFactory = new StdSchedulerFactory();
        Scheduler scheduler = stdSchedulerFactory.getScheduler();
        JobDetail jobDetail = JobBuilder.newJob(RamJob.class).withIdentity("job2", "group2").withIdentity("这是我们的一个定时任务案例").build();
        //触发器(存放定时任务执行规则)
        
        Trigger trigger = (Trigger) TriggerBuilder.newTrigger()
//                .withSchedule(CronScheduleBuilder.cronSchedule("5/3 * * * * ?"))//从第五秒开始每三秒执行一次,无上限
//                .withSchedule(CronScheduleBuilder.cronSchedule("0 58 20 * * ?"))//在20:57时执行此任务
                .withSchedule(CronScheduleBuilder.cronSchedule("0/10 * * * * ?"))//每十秒执行一次
                .withIdentity("trigger2", "group2").withDescription("这是我们的一个触发器").build();
        //把作业类与触发器组装
        scheduler.scheduleJob(jobDetail, trigger);
        //启动定时任务
        scheduler.start();
    }
}

结果:
间隔10秒
在这里插入图片描述

工具篇-- 定时任务quartz 在项目开发中我们经常需要在某个特定的时间做业务处理,如发生生日祝福,除夕拜年短信等,那么就需要使用定时任务框架来解决;Quartz是一个功能丰富的开源任务调度库,用于在Java应用程序中进行任务调度。它提供了一种灵活而强大的方式来定义和安排任务的执行时间,支持周期性任务、延迟任务、固定间隔任务等。Quartz的特点和功能:灵活的任务调度:Quartz可以根据各种调度规则定义任务的执行时间,如固定延迟、固定间隔、Cron表达式等。可以轻松地创建简单或复杂的任务调度方案。 阅读详情

相关推荐

Quartz完全开发手册(一篇学会Quartz所有知识点)

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz是开源且具有丰富特性的"任务调度库",能够集成于任何的java应用,小到独立的应用,大至电子商业系统。Quartz能够创建亦简单亦复杂的调度,以执行上十、上百,甚至上万的任务。任务job被定义为标准的java组件,能够执行任何你想要实现的功能。quartz调度框架包含许多企业级的特性,如JTA事务、集群的支持。

hao_kkkkk的专栏 2188

Quartz入门教程

官网在日常的开发过程中,简单的定时任务,比如每天凌晨对数据进行备份,这样的场景,我们使用 提供的注解 就可以满足业务,但是对于一些复杂的任务调度场景,比如日程提醒,从日程中取消,开始,停止,暂停日程进度,这样复杂一些的场景,就无法满足了,此时就需要用到Quartz ,它可以持久性作业(即,保持调度定时的状态) ,作业管理 (即,对调度作业进行有效的管理)Cron表达式在线生成 时间元素 可出现的字符 有效数值范围 秒 , - * / 0-59 分 , - * / 0-59 小时 ,

weixin_48974246的博客 4039

H265/HEVC视频分层码流分析语义元素解释

一、H265概述 H265/HEVC(Hight Efficiency Video Coding)是由ITU-T和ISO/IEC两大组织在H264/AVC的基础之上推出的新一代高效视频编码标准,主要为应对高清和超高清视频在网络传输和数据存储方面带来的挑战。上一篇文章对H264/AVC视频码流进行了详细的分析,本文继续从数据处理的角度对H265/HEVC视频码流进行详细分析。 二、H265分层结构 H265的分层结构与H264类似,分为视频编码层(VCL:Video Code Layer)和网络抽象层(NAL

weixin_43876729的博客 9431

SpringBoot整合Quartz超详细完整教程

SpringBoot整合Quartz全流程 一、开发环境准备 二、Quartz的实现 2.2、创建一个定时任务 创建的定时任务类需要继承QuzrtzJobBean,新建一个定时任务类:TaskForEvery

weixin_44966143的博客 6222

gerrit 配置 ----Gitweb集成

此外,为了让用户能够查看任何关于 gitweb 的信息 项目中,用户必须能够阅读所有引用(包括 refs/meta/config,refs/meta/dashboards/*等)。或者,如果Gerrit通过反向代理送达,它可以 为gitweb的链接生成不同的URL(需要的) 在网页服务器上重写为)。Gerrit 代码审查可以管理和生成指向 gitweb 的超链接, 允许用户从Gerrit内容跳转到相同信息, 但由 gitweb 显示。默认为,这是 Linux 发行版上“gitweb”包的常见安装路径。

QuanQuanYuanXin的博客 1404

新能源汽车整车控制器(VCU)深度全解:硬件原理、工作流程、接口设计与高压安全实战

整车控制器(VCU,Vehicle Control Unit)是新能源纯电动、混动汽车的核心决策大脑,相当于汽车的“中枢神经系统”。它不直接驱动电机,却统筹电机控制器(MCU)、电池管理系统(BMS)、充电机(OBC)、DC/DC、空调、热管理、底盘等全部部件,负责驾驶意图解析、动力输出控制、高压上下电管理、故障安全保护、能量优化等关键任务。VCU所有设计均围绕车规级环境适应性、功能安全(ISO 26262)、实时性、高压安全性四大核心目标,与通用控制器完全不同。

优快云-新能源汽车研发测试专业博主 2471

Quartz - Quartz简单入门

一、相关介绍      Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,是完全由Java开发的一个开源的任务日程管理系统 二、概念和类     Job:要执行的作业类所实现的接口     JobDetail:定义作业实例的详细信息属性     Trigger:触发器接口,Quartz中提供了SimpleTrigger、CronTirgg

袭冷 603

Wazuh部署记录

Wazuh是一个免费的开源安全平台,统一了XDR和SIEM功能。它可以保护内部部署、虚拟化、容器化和基于云的环境中的工作负载。Wazuh帮助组织和个人保护其数据资产免受安全威胁。它被全球数千个组织广泛使用,从小型企业到大型企业。443:仪表盘界面访问端口1515:探针连接服务器端口1514:探针回传信息端口以上3个端口必须打开防火墙。

墨痕诉清风的博客 1556

quartz框架_精进Quartz—Quartz简单入门Demo(二)

欢迎关注我的公众号: Java编程技术乐园。分享技术,一起精进Quartz!做一个积极的人编码、改bug、提升自己我有一个乐园,面向编程,春暖花开!要学习Quartz框架,首先大概了解了Quartz的基本知识后,在通过简单的例子入门,一步一个脚印的走下去。 下面介绍Quartz入门的示例,由于Quartz的存储方式分为RAM和JDBC,分别对这两种进行简单的说明。并附上代码! 首先需要添加Quar...

weixin_39994461的博客 101

【OpenClaw从入门到精通】第03篇:吃透Gateway/Skills/ClawHub核心概念(2026实测+避坑)

本文针对OpenClaw新手易混淆的核心概念痛点,以通俗类比+实操演示拆解OpenClaw核心、Gateway、Skills、ClawHub四大组件。通过“数字员工团队”类比明确各组件定位:OpenClaw核心是“老板”(调度中心)、Gateway是“前台+后勤”(后台进程)、Skills是“专业员工”(功能插件)、ClawHub是“人才市场”(技能商店)。补充版本更名史、技能加载优先级、ClawHub与GitHub区别等关键细节,结合“AI融资新闻查询并邮件推送”虚拟案例演示组件协同流程,梳理5个高频认知

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 5036

【深度学习基础】多任务学习(Multi-Task Learning)

多任务学习(Multi-task learning)是和单任务学习(single-task learning)相对的一种机器学习方法。在机器学习领域,标准的算法理论是一次学习一个任务,也就是系统的输出为实数的情况。复杂的学习问题先被分解成理论上独立的子问题,然后分别对每个子问题进行学习,最后通过对子问题学习结果的组合建立复杂问题的数学模型。多任务学习是一种联合学习,多个任务并行学习,结果相互影响。一次只学习一个任务(task),大部分的机器学习任务都属于单任务学习。

十二月的猫 1万+

【Quartz】Quartz概述及入门实例

Quartz 在开源任务调度框架中的翘首,它提供了强大任务调度机制,难能可贵的是它同时保持了使用的简单性。Quartz 允许开发人员灵活地定义触发器的调度时间表,并可以对触发器和任务进行关联映射。此外,Quartz提供了调度运行环境的持久化机制,可以保存并恢复调度现场,即使系统因故障关闭,任务调度现场数据并不会丢失。此外,Quartz还提供了组件式的侦听器、各种插件、线程池等功能。

Evankaka的专栏 7674

详解【异质图卷积网络 RGCN】回顾:图神经网络问题的三大处理步骤 | 从起源说起,RGCN核心公式解释,两种降低模型参数量/优化的方式,附核心代码实现讲解

本篇,我们深入分析和学习RGCN的原理以及为何要这么做。首先让我们来回顾对于图神经网络问题的三大处理步骤,可以说,这是该深度学习模型的基本理解,后续都是在深化其中的细节处理。然后以容易理解的方式,引出异质图卷积网络RGCN的由来,主要讲解其核心公式和论文中作者所提出的两种降低模型参数量/优化的处理办法,并给出基础分解以及块对角分解的核心实现代码讲解。最后附上RGCN源代码及说明。

追光者♂:记录、分享、总结、提升,现象级专栏《Python从入门到人工智能》作者,无惧黑暗,坚信曙光 1279

Quartz框架快速入门

创建一个quartz包,创建自定义的Job任务类使用@Scheduled 定义某个定时作业(或工作)@Component@Slf4j”)log.info(“任务正执行:” + System.currentTimeMillis());这就是敏捷式开发,就是这么开心。Quartz是一个开源的任务调度框架。作用是基于定时、定期的策略来执行任务。它是OpenSymphony开源组织在Job scheduling领域又一个开源项目。“任务进度管理器”就是一个。

llg3189609554的博客 1600

STM32实战开发(122):基于STM32的溶解氧检测系统设计与实现

溶解氧(DO, Dissolved Oxygen)是水质检测中至关重要的指标之一,尤其是在环境监测、工业废水处理以及水产养殖等领域,溶解氧的浓度直接影响到水体的生态环境和生物的健康。电流的大小就可以用来反映水中溶解氧的浓度。本博客将详细介绍如何基于STM32微控制器开发一个智能溶解氧检测系统,内容涵盖系统的硬件设计、软件开发、优化与调试等方面,提供实际的代码实现与实验数据,并展望溶解氧检测系统在物联网环境下的应用。为了提高系统的精度,可以优化ADC的采样率,增加传感器的校准频率,或使用更加精确的传感器。

2201_76125393的博客 1601

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Quartz 入门

Quartz是一个Java开源作业调度框架。用于创建及管理定时任务。

KEEP CODING 997

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【Quartz篇】Quartz快速入门以及简单原理概述

我们需要明白 Quartz 的几个核心概念,这样理解起 Quartz 的原理就会变得简单了。1.先使用springboot脚手架创建一个springboot项目(不再赘述)3.定义一个自己的job类实现job接口。5.运行可以看到我们自己定义的。

m0_53732433的博客 610

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

C# -- Quartz.Net入门案例

1. 入门案例 using Quartz;using Quartz.Impl; public class PrintTime : IJob { public Task Execute(IJobExecutionContext context) { return Task.Factory.StartNew(new ...

weixin_30649859的博客 127

Quartz入门,让你快速开始使用Quartz

当使用spring自带的定时任务线程调用类时,不同的服务器之间使用的是一样的代码,而且他的配置是在内存当中,不能实现内存共享。使用在自动运行的时候会执行重复的操作,比如a服务器对某数据进行修改,b服务器并不知道a服务器已经做了这件事,又执行了一次重复的操作。所有的定时任务在进行操作时会先访问数据库看看任务的状态,当已经运行就没必要继续运行了,如果没有运行则对人物进行加锁,运行完了后再修改状态。quartz的实现是基于接口Schedular进行实现的,在进行quartz运行之前我们需要实现如下的配置。

freaty的博客 1174

Quartz(二)入门案例

https://www.mvnrepository.com maven查找相关配置 Maven配置 <!-- 核心包 --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <...

weixin_44134471的博客 308

【任务调度】Quartz入门

Quartz 是一个开源的作业调度框架,它完全由 Java 写成。Quartz 自带了集群方案。它通过将作业信息存储到关系数据库中,并使用关系数据库的行锁来实现执行作业的竞争,从而保证多个进程下,同一个任务在相同时刻,不能重复执行。Scheduler :调度器Trigger :触发器Job :任务Quartz 分成【单机模式】和【集群模式】。在生产环境下,一定一定一定要使用 Quartz 的集群模式,保证定时任务的高可用。JobStore。

沉梦听雨的博客 1403
上一篇: springboot博文整理
下一篇: quartz之动态定时器实现
water_java
博客等级 码龄7年 9粉丝 124原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值