记事本好帮手:quartz数据库日程安排 (quartz数据库日程安排)

现代社会,各行各业都离不开计划和日程安排。但是,传统的手写日历和电子日历往往难以满足人们精细化的需求。为了更好地管理时间与工作,业内逐渐涌现出各种强大的日程工具。quartz数据库日程安排作为其中一款备受好评的日程工具,优秀的性能和方便的使用方式受到了越来越多人的欢迎。

一、quartz数据库日程安排介绍

1、什么是quartz数据库日程安排?

quartz是一款用于创建定时任务的开源工具。quartz封装了定时任务的核心逻辑,可以方便地创建并管理多个定时任务。quartz所使用的数据存储方式采用的是数据库存储。

2、quartz库表结构

quartz库表结构如下图所示:

![quartz库表结构](https://img-blog.csdn.net/20230717224840253?watermark/2/text/aHR0cDovL2J2cuY3Nkbi5uZXQvc2l2ZWhpdGlvc2hpOTEy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/70)

三张表分别是:任务、触发器、日历表。任务与触发器是一对一的关系,日历表则是可选表。

3、quartz核心概念

quartz主要有四个核心概念:Job、Trigger、Scheduler、Calendar。

Job:实现了具体的任务内容。通过实现Job接口来定义自己的任务。

Trigger:用于触发Job。定义了任务执行的时间。

Scheduler:任务调度器。负责管理任务和调度器。

Calendar:提供了执行定时任务的时间表。

二、为何选择quartz数据库日程安排

1、之一优势:quartz库表结构清晰

据传统的定时任务框架相比,quartz库表结构非常的整齐清晰。

首先我们安装好quartz之后,quartz会自动为我们建立如下的表结构:

![quartz库表结构清晰,三张表有机械关联,数据库表的设计优雅且精细。](https://img-blog.csdn.net/20230130202341632?watermark/2/text/aHR0cDovL2J2cuY3Nkbi5uZXQvd3p3aW5saWJyYXJ5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/70)

JobDetl:表示一个具体的可执行的调度程序,Job是这个可执行程调度程序所要执行的内容,另外JobDetl还包含了这个任务调度的方案和策略。

Trigger:即调度触发器,描述触发Job执行的时间点和时间策略。

SimpleTrigger: 简单触发器,一个特定的时间段内执行一次作业任务。然后再基于设定的时间间隔,重复地执行多次任务。

CronTrigger:调度接口,按日历规定的时间执行作业任务。简单地理解为按一定的时间间隔执行任务。

Trigger 实现了Scheduler的组件触发的接口,当一个trigger被触发时,就执行与之关联的job。

2、第二优势:quartz高度灵活

quartz框架为用户提供了非常多的配置选项,可以适应不同环境下的任务调度需求。比如:

1) 网页式的调度界面,当然,使用原生的界面要写一定的代码,可以使用firefox的插件——即时编辑器,因为是javascript的,所以jsp真没什么需要做的,直接在.jsp里面嵌入javascript代码就可以了。

![网页式的调度界面能够完美展示调度情况](https://img-blog.csdnimg.cn/img_convert/d2c293617b529a6310116fbca0fadd07.png)

2) 完整的任务调度控制。

3) quartz的任务调度模块可嵌入任何Java应用程序中。

4) 任务的并发执行 —— 即在同时执行多个任务。

5) 计划执行 —— 按照某个预定的计划执行任务比如在每天的8点执行。

6) workflow流程 —— 即根据实际的业务流程来调度任务。

3、第三优势:quartz具有高效性

-quartz可以支持集群模式下使用,多个调度服务实例可通过共享同一个数据库以实现负载均衡和失效转移。

-quartz能满足各种任务的复杂性和灵活性需求,可以执行任务、子任务、触发器灵活且可定制化。

-quartz的任务调度框架并不会带来太大的负载,所以能够保证它的稳定性。

-quartz可以根据配置参数和状态的改变来流畅地调整任务的执行顺序和执行方式,从而保证任务的高效执行。

在任务调度方面,quartz是足够强大的。在使用中,用户可以通过quartz的API来实现任务的分派、分配,同时也可控制批处理的数据加载,实现高效的数据处理。由于quartz使用的是数据库来存储调度任务的参数,因此它的可靠性得到了保证。

三、怎么使用quartz实现数据库日程安排

1、准备工作

安装好java JDK、quartz组件(Maven中添加groupId、artifactId即可),并创建一个简单的MySQL数据库。

2、新建约会类(任务类)

“`java

public class JobTriggerExample implements Job {

private int runCount = 0;

public void execute(JobExecutionContext context) throws JobExecutionException {

runCount++;

System.out.println(“执行…”);

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

“`

3、编写任务调度器工具类

“`java

public class SchedulerUtil {

//从工厂中获取一个调度器实例化

private static Scheduler sched = StdSchedulerFactory.getDefaultScheduler();

/**

* 开始执行定时调度任务

* @throws SchedulerException

*/

public static void startSchedule() throws SchedulerException {

sched.start();

}

/**

* 向 Scheduler 中新增一个 JobDetl 和 Trigger

* 这样,就完成了一个简单的定时任务

* @throws SchedulerException

*/

public static void scheduleJob() throws SchedulerException{

JobDetl job = newJob(JobTriggerExample.class).withIdentity(“jobname”, “jobgroup”).build();

Trigger trigger = newTrigger().withIdentity(“triggername”, “triggergroup”)

.withSchedule(simpleSchedule()

.withIntervalInSeconds(2)

.repeatForever())

.startNow()

.build();

sched.scheduleJob(job, trigger);

}

/**

* 关闭 Scheduler

* @throws SchedulerException

*/

public static void shutdownSchedule() throws SchedulerException {

sched.shutdown();

}

}

“`

4、测试(启动任务调度器)

“`java

import org.quartz.SchedulerException;

public class QuartzApplication {

public static void mn(String[] args) throws SchedulerException, InterruptedException {

//打印系统时间

System.out.println(“系统时间\t”+new Date().toLocaleString());

//任务调度器

SchedulerUtil.startSchedule();

System.out.println(“System running…”);

}

}

“`

四、顶级企业都在使用quartz数据库日程安排

quartz日程工具已经被众多企业所使用,包括:中国移动、中国联通、广东电信以及四大银行等。

移动日程(Mobile Schedule)、小日程(Schedule Lite)、OA日程、So Easy小日程等使用quartz实现调度任务。企业因此获得了一系列效益: 1) 高效的任务调度。 2) 可靠的任务管理。 3) 敏捷的业务变化和部署。

五、

quartz数据库日程安排作为一种强大的日程安排工具,它凭借着精致的库表结构、高度灵活性和高效性获得了众多用户的青睐。通过quartz可以方便地创立和管理多个定时任务,实现高效、可靠的任务调度,解决了人们传统日历无法满足的需求。随着quartz日程工具的不断升级,它将为人们提供更加灵活、智能的日程安排服务。

相关问题拓展阅读:

Spring+Quartz查询数据库动态设置cron表达式求助

n class=”org.springframework.scheng.quartz.SchedulerFactoryBean”>裤磨

  主要有三个核心概念:调度器、任务和触发器。

  三者关系简单来说就是,调度器负责调度各个任务,到了某个时刻或者过了一定时间,触发器触动了,特定任务便启动执行。概念相对应的类和接口有:

  1)JobDetail:望文生义就是描述任务的相关情况;

  2)Trigger:描述出发Job执行的时间触发规则。有SimpleTrigger和CronTrigger两个子类代表两种方式,一种是每隔多少分钟小时执行,则用SimpleTrigger;另一种是日历相关的重复时间间隔,如每天凌晨,每周星期一运行的话,通过Cron表达式便可定义出复杂的调度方案。

  3)Scheduler:代表一个Quartz的独立运行容器,Trigger和JobDetail要注册到Scheduler中才会生灶闭效,也就是让调度器知隐档裂道有哪些触发器和任务,才能进行按规则进蠢陪行调度任务。

关于quartz数据库日程安排的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 记事本好帮手:quartz数据库日程安排 (quartz数据库日程安排)