iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何实现基于Quartz定时调度任务
  • 450
分享到

如何实现基于Quartz定时调度任务

quartz 2023-05-30 22:05:25 450人浏览 薄情痞子
摘要

小编给大家分享一下如何实现基于Quartz定时调度任务,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!简介Quarzt是一个项目中定时执行任务的开源项目,Quart

小编给大家分享一下如何实现基于Quartz定时调度任务,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

简介

Quarzt是一个项目中定时执行任务的开源项目,Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用,这里我们介绍和spring整合的例子

因为Spring已经整合Quarzt,所以我们只需要配置一下即可。

下载jar包

可以直接去Http://www.quartz-scheduler.org/ Quarzt的官方网站下载jar

可以通过Maven来构建,记得引入Spring所需要的jar

<!-- 引入quartz对应的依赖 --> <dependency>  <groupId>org.quartz-scheduler</groupId>  <artifactId>quartz</artifactId>  <version>2.2.3</version> </dependency> <dependency>  <groupId>org.quartz-scheduler</groupId>  <artifactId>quartz-jobs</artifactId>  <version>2.2.3</version> </dependency>

概念

任务类:即需要定时执行代码的类。

JobDetail:配置任务类的细节,即注入任务类和指定任务类的方法,是一个可执行的工作,它本身可能是有状态的。

触发器(myTrigger):触发器代表一个调度参数的配置,配置调用的时间。

调度工厂(scheduler):是一个计划调度器容器,容器里面可以盛放众多的JobDetail和trigger,当容器启动后,里面的每个JobDetail都会根据trigger按部就班自动去执行。

如何实现基于Quartz定时调度任务

配置方法

•首先编写任务类

public class MyJob { public void job() {  System.out.println(new SimpleDateFORMat("yyyy-MM-dd HH:mm:ss").format(new Date()) + ": 任务执行"); }}

•然后再spring配置任务类的bean

<bean id="myJob" class="quarzt.test.MyJob" / >

•配置JobDetail,注入任务类和任务类的方法

<bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <!-- 注入目标对象 --> <property name="targetObject" ref="myJob"/> <!-- 注入目标方法 --> <property name="targetMethod" value="job"/></bean>

•配置触发器

<!-- 配置触发器 --><bean id="myTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <!-- 注入任务详情对象 --> <property name="jobDetail" ref="jobDetail"/> <!-- 注入cron表达式,通过这个表达式指定触发的时间点 --> <property name="cronExpression">  <value>/5 * * * * ?</value> // 表示每隔五秒执行一次。 corn在下面会有活命 </property> </bean>

•最后配置调度工厂并且注入配置好的触发器

<!-- 配置调度工厂 --><bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <!-- 注入触发器 --> <property name="triggers">  <list>   <ref bean="myTrigger"/>  </list> </property></bean>

到此就配置完成,可以执行定时任务了。

执行结果

如何实现基于Quartz定时调度任务

cron表达式

corn用来控制任务的调度时间,在Trigger中配置,下面是corn表达式的基本语法,如果看着太复杂,网上提供了corn语法生成器 http://cron.qqe2.com/ 可以通过指定条件自动生成corn表达式。

下面是七个*所代表的意义

如何实现基于Quartz定时调度任务

星号:* 代表任意时间,即指示着你想在这个域上包含所有合法的值,

* * * * * * 代表每时每刻都会触发

0 * 17 * * ? : 每天从下午5点到下午5:59中的每分钟激发一次 trigger。它停在下午 5:59 是因为值 17 在小时域上,在下午 6 点时,小时变为 18 了,也就不再理会这个 trigger,直到下一天的下午5点。

问号(?):? 号只能用在日和周域上,但是不能在这两个域上同时使用。你可以认为 ? 字符是 "我并不关心在该域上是什么值。" 这不同于星号,星号是指示着该域上的每一个值。? 是说不为该域指定值,假如你为这两域的其中一个指定了值,那就必须在另一个字值上放一个 ?。

0 10,44 14 ? 3 WEB :在三月中的每个星期三的下午 2:10 和 下午 2:44 被触发。

逗号(,) : 是用来在给某个域上指定一个值列表的。例如,使用值 0,15,30,45 在秒域上意味着每15秒触发一个 trigger。

0 0,15,30,45 * * * ? :每刻钟触发一次 trigger。

反斜线(/): (/) 是用于时间表的递增的。我们刚刚用了逗号来表示每15分钟的递增,但是我们也能写成这样 0/15。

0/15 0/30 * * * ? :在整点和半点时每15秒触发 trigger。

中划线(-):中划线 (-) 用于指定一个范围。例如,在小时域上的 3-8 意味着 "3,4,5,6,7 和 8 点。" 域的值不允许回卷,所以像 50-10 这样的值是不允许的。

0 45 3-8 ? * * ::在上午的3点至上午的8点的45分时触发。

字母(L):L 说明了某域上允许的最后一个值。它仅被日和周域支持。当用在日域上,表示的是在月域上指定的月份的最后一天,当 L 字母用于周域上,指示着周的最后一天,就是星期六 (或者数字7),你可以用一个数字与 L 连起来表示月份的最后一个星期 X。

0 0 8 L * ?:每个月最后一天的上午 8:00 触发

0 59 23 ? * L:每个月的最后一个星期六下午的 11:59 触发

0 0 12 ? * 2L:每个月的最后一个星期一触发(数字与 L 连起来表示月份的最后一个星期 X)

字母(W):平日 (Mon-Fri),并且仅能用于日域中。它用来指定离指定日的最近的一个平日

井号(#):# 字符仅能用于周域中。它用于指定月份中的第几周的哪一天。例如,如果你指定周域的值为 6#3,它意思是某月的第三个周五 (6=星期五,#3意味着月份中的第三周)。

示例

"0 0 12 * *?" 每天中午12点触发"0 15 10 ? **" 每天上午10:15触发"0 15 10 * *?" 每天上午10:15触发"0 15 10 * * ?*" 每天上午10:15触发"0 15 10 * * ?2005" 2005年的每天上午10:15触发"0 * 14 * *?" 在每天下午2点到下午2:59期间的每1分钟触发"0 0/5 14 * *?" 在每天下午2点到下午2:55期间的每5分钟触发"0 0/5 14,18 ** ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发"0 0-5 14 * *?" 在每天下午2点到下午2:05期间的每1分钟触发"0 10,44 14 ? 3WED" 每年三月的星期三的下午2:10和2:44触发"0 15 10 ? *MON-FRI" 周一至周五的上午10:15触发"0 15 10 15 *?" 每月15日上午10:15触发"0 15 10 L *?" 每月最后一日的上午10:15触发"0 15 10 ? *6L" 每月的最后一个星期五上午10:15触发"0 15 10 ? * 6L2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发"0 15 10 ? *6#3" 每月的第三个星期五上午10:15触发

以上是“如何实现基于Quartz定时调度任务”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: 如何实现基于Quartz定时调度任务

本文链接: https://www.lsjlt.com/news/221776.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何实现基于Quartz定时调度任务
    小编给大家分享一下如何实现基于Quartz定时调度任务,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!简介Quarzt是一个项目中定时执行任务的开源项目,Quart...
    99+
    2023-05-30
    quartz
  • quartz任务调度怎么实现
    在Java中,可以使用Quartz任务调度框架来实现任务调度。以下是实现Quartz任务调度的一般步骤:1. 添加依赖:在项目的构建...
    99+
    2023-08-31
    quartz
  • java任务调度quartz怎么实现
    使用Quartz实现Java任务调度的步骤如下:1. 导入Quartz库:在项目的依赖管理中,添加Quartz库的Maven或Gra...
    99+
    2023-09-18
    quartz java
  • SpringBoot+Quartz实现动态定时任务
    本文实例为大家分享了springBoot+Quartz实现动态定时任务的具体代码,供大家参考,具体内容如下 目前常用的几种任务调度 Timer,简单无门槛,一般也没人用。spring...
    99+
    2024-04-02
  • 如何实现PHP底层的定时任务调度
    实现PHP底层的定时任务调度文章摘要:无论是网站还是后台任务,在很多场景下都需要定时执行某些特定的操作,如发送邮件、数据备份等。PHP作为一种流行的开发语言,本身并没有内置的定时任务调度功能,但我们可以借助一些工具或者编写代码来实现定时任务...
    99+
    2023-11-08
    PHP定时任务 调度器 底层操作
  • C#基于时间轮调度实现延迟任务详解
    在很多.net开发体系中开发者在面对调度作业需求的时候一般会选择三方开源成熟的作业调度框架来满足业务需求,比如Hangfire、Quartz.NET这样的框架。但是有些时候可能我们只...
    99+
    2022-12-31
    C# 时间轮调度 延迟任务 C#延迟任务 C#延迟
  • Java 任务调度框架 Quartz实操
    目录1、Quartz 1.1 引入依赖 1.2 入门案例 任务类,需要实现 Job 接口 定时器类 1.3 Job 与 JobDetail 1.4 JobExecutionConte...
    99+
    2024-04-02
  • 怎么使用.NET6+Quartz实现定时任务
    这篇文章主要介绍“怎么使用.NET6+Quartz实现定时任务”,在日常操作中,相信很多人在怎么使用.NET6+Quartz实现定时任务问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用.NET6+Qua...
    99+
    2023-07-05
  • SpringBoot整合Quartz实现定时任务详解
    目录Quartz简介核心概念SchedulerJobDetailJobTriggerSpringBoot整合Quartz准备数据库表Maven相关依赖配置文件quartz配置类创建任...
    99+
    2022-11-13
    SpringBoot Quartz SpringBoot Quartz定时任务
  • SpringBoot集成quartz实现定时任务详解
    目录准备知识点什么是QuartzQuartz的体系结构什么是Quartz持久化实现案例 - 单实例方式实现案例 - 分布式方式后端实现前端实现测试效果准备知识点 需要了解常用的Qua...
    99+
    2022-11-13
    SpringBoot quartz定时任务 SpringBoot 定时任务 SpringBoot quartz
  • PHP中如何进行任务调度和定时任务?
    在Web开发中,很多网站和应用需要定期执行一些任务,比如清理垃圾数据、发送邮件等。为了自动化这些任务,开发人员需要实现任务调度和定时任务的功能。本文将介绍PHP中如何实现任务调度和定时任务,以及一些常用的第三方库和工具。一、任务调度任务调度...
    99+
    2023-05-14
    PHP 定时任务 任务调度
  • Linux 定时任务调度(crontab)
    一、Crontab Crontab命令用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。 可以使用Crontab定时处理离线任务,比如...
    99+
    2023-09-20
    linux 服务器 运维
  • 如何在springboot中利用Quartz实现一个定时任务功能
    如何在springboot中利用Quartz实现一个定时任务功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、新建一个springboot工程,并添加依赖<depen...
    99+
    2023-05-31
    springboot art quartz
  • 在springboot项目中使用quartz如何实现一个定时任务
    今天就跟大家聊聊有关在springboot项目中使用quartz如何实现一个定时任务,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。spring支持多种定时任务的实现。我们来介绍下使用...
    99+
    2023-05-31
    springboot art quartz
  • Java使用quartz实现定时任务示例详解
    目录正文配置文件pom定时任务和触发器定时任务的业务代码正文 最近新到了一个项目,用到定时任务的地方是真滴多。 就稍微研究了一下,来做个demo。 其实定时任务使用很广泛也很方便,之...
    99+
    2022-11-13
    Java quartz定时任务 Java quartz
  • Java中Quartz高可用定时任务怎么实现
    本篇内容介绍了“Java中Quartz高可用定时任务怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!定时任务使用指南如果你想做定时任务...
    99+
    2023-06-29
  • quarzt定时调度任务解析
    简介Quarzt是一个项目中定时执行任务的开源项目,Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用,这里我们介绍和spring整合的例子...
    99+
    2023-05-30
    quartz 定时任务 任务调度
  • SpringBoot实现quartz定时任务可视化管理功能
    前言 在实际框架或产品开发过程中,springboot中集成quarzt方式基本是以job和trigger的bean对象方式直接硬编码完成的,例如以下代码示例。对于系统内定义的所有定...
    99+
    2024-04-02
  • SpringBoot定时任务调度与爬虫的配置实现
    SpringTask SpringTask是Spring自主研发的轻量级定时任务工具,相比于Quartz更加简单方便,且不需要引入其他依赖即可使用。 SpringTask的配置 在配...
    99+
    2024-04-02
  • Nagios如何处理监控任务的定时调度
    Nagios使用配置文件中定义的时间间隔来执行监控任务的定时调度。在Nagios配置文件中,可以设置监控任务的检查间隔和重试间隔,以...
    99+
    2024-03-12
    Nagios
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作