iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Quartz作业调度基本使用详解
  • 924
分享到

Quartz作业调度基本使用详解

2024-04-02 19:04:59 924人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录Quartz核心概念Quartz结合spring使用的一些细节总结Quartz核心概念 实际业务开发中会遇到定时任务的情形,这种时候可以使用Quartz来帮助我们便捷地完成。 ①

Quartz核心概念

实际业务开发中会遇到定时任务的情形,这种时候可以使用Quartz来帮助我们便捷地完成。

① Job

Job表示一个工作(任务),需要执行的具体内容。开发中我们可以通过实现Job接口,来指定我们具体要执行的工作。不过也可以直接写一个类,Spring会帮助我们做具体的注入。

public interface Job {
    void execute(JobExecutionContext context)
        throws JobExecutionException;
}

当然我们可以使用Spring配置将Job注入容器,如下:

<bean id="helloJob" class="com.example.jobs.HelloJob"/>

② JobDetail

JobDetail表示一个具体的可执行的调度程序,Job 是这个可执行程调度程序所要执行的内容。我们需要通过JobDetail来对Job进行绑定,具体如下:

  JobDetail job = newJob(HelloJob.class)
      .withIdentity("helloJob", "group1") 
      .build();

当然我们也可以通过配置Spring将其注入到应用容器当中,如下:

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

③ TriggerTrigger定义执行给定作业的计划的组件。

  Trigger trigger = newTrigger()
      .withIdentity("myTrigger", "group1")
      .startNow()
      .withSchedule(simpleSchedule()
          .withIntervalInSeconds(40)
          .repeatForever())            
      .build();

在Spring配置中继续注册我们的触发器,如下:

    <bean id="myTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <!-- 注入JobDetail -->
        <property name="jobDetail" ref="jobDetail"/>
        <!-- 指定触发的时间,基于Cron表达式 -->
        <property name="cronExpression">
            <!--<value>0 0 2 * * ?</value>-->
            <value>0/10 * * * * ?</value>
        </property>
    </bean>

④ SchedulerScheduler代表一个调度容器,一个调度容器中可以注册多个 JobDetail 和 Trigger。

        //注册trigger并启动scheduler
        scheduler.scheduleJob(job,trigger);
        scheduler.start();

在Spring中我们也使用对应的FactoryBean来完成注册,如下:

    <!-- 注册一个统一的调度工厂,通过这个调度工厂调度任务 -->
    <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <!-- 注入多个触发器 -->
        <property name="triggers">
            <list>
                <ref bean="myTrigger"/>
            </list>
        </property>
    </bean>

Quartz结合Spring使用的一些细节

autoStartup自动启动

通过观察代码,我们不难发现在编码中我们手动去启动了scheduler,如下:

        scheduler.start();

而在Spring中,我们使用了SchedulerFactoryBean,工厂Bean来完成scheduler对象的注入。我们并没有显示地去获取scheduler对象,和启动任务调度。

因为在Spring bean相应的生命周期内,框架已经帮我们完成了启动与调度。

(此处我们不讨论FactoryBean获取bean对象的相关细节,大家应该清楚FactoryBean会通过getObject()来返回我们相应的bean)

SchedulerFactoryBean自动启动任务调度的部分源码

通过查看源码,我们可以看到SchedulerFactoryBean的属性默认支持scheduler的自动启动。

我们也可以通过setAutoStartup()方法来禁用此选项。

    private boolean autoStartup = true;
    
    public void setAutoStartup(boolean autoStartup) {
        this.autoStartup = autoStartup;
    }

JobDetail与Trigger

编码形式的JobDetail与Trigger其实没有直接绑定,理论上两者都可以复用。但是Spring的形式中因为我们使用了特定的FactoryBean,Trigger绑定了JobDetail,能够复用的仅有JobDetail。

总结

Quartz的功能其实相当强大,此案例只是使用了基本的功能,对于更深入的内容没有展开讨论,更多关于Quartz作业调度的资料请关注编程网其它相关文章!

--结束END--

本文标题: Quartz作业调度基本使用详解

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

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

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

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

下载Word文档
猜你喜欢
  • Quartz作业调度基本使用详解
    目录Quartz核心概念Quartz结合Spring使用的一些细节总结Quartz核心概念 实际业务开发中会遇到定时任务的情形,这种时候可以使用Quartz来帮助我们便捷地完成。 ①...
    99+
    2022-11-13
  • 在 Spring Boot 中使用 Quartz 调度作业的示例详解
    目录使用QuartzSimpleJob.java工作商店线程池配置多个调度器结论在本文中,我们将看看如何使用Quartz框架来调度任务。Quartz是Java应用程序调度库的事实标准...
    99+
    2022-11-13
  • 作业调度框架Quartz.net用法详解
    目录一、介绍quartz的构成和基本工作流程二、基于文件配置1、引入包2、配置3、接口实现4、启动Quartz5、禁用Quartz.NET日志输出6、当应用或网站关闭时结束正在执行的...
    99+
    2022-11-13
  • KotlinFlow操作符及基本使用详解
    目录一、Flow的基本概念二、Flow的生命周期与异常处理2.1 开始与结束2.2 异常的处理2.3 retry的处理2.4 超时的处理2.5 Flow的取消三、Flow的创建方式四...
    99+
    2022-11-13
  • jdbc基本使用详解
    JDBC全称Java DataBase Connectivity / java数据库连接,是使用java连接和操作数据库的最基本驱动工具。sun公司的javasoft部门开发最早的JDBC 1.0 随JDK...
    99+
    2022-10-18
  • gochan基本使用详解
    目录1、有缓冲的chan 与无缓冲的chan2、有缓冲的chan3、利用chan 实现生产者消费者4、利用chan 实现同步5、并发处理1、有缓冲的chan 与无缓冲的chan 怎么...
    99+
    2023-05-18
    go chan使用 go chan
  • 详解Linux下调试器GDB的基本使用方法
    目录一、概述二、gdb调试2.1、设置断点2.1.1、断点commands高级功能2.2、运行2.3、显示栈帧2.4、显示变量2.5、显示寄存器2.6、单步执行2.7、继续执行2.8、监视点2.9、改变变量的值2.1...
    99+
    2022-06-03
    Linux 调试器 GDB 调试器
  • Android RecyclerView基本使用详解
    什么是RecyclerView 关于RecyclerView,是一个主要用于展示和回收View的有一个控件,在官用了一句话来概括 RecyclerView 是一种通过提供有限的...
    99+
    2022-06-06
    recyclerview Android
  • Java Spring JdbcTemplate基本使用详解
    目录JdbcTemplate概述JdbcTemplate开发步骤JdbcTemplate快速入门Spring产生JdbcTemplate对象JdbcTemplate概述 它是spri...
    99+
    2022-11-12
  • Dbeaver基本使用图文详解
    1:与plsql相比,Dbeaver没有右击直接查看表注释的功能,但是Dbeaver提供了一个“打开声明”的功能,里面可以查看一些比较实用的内容:表列注释、创建该表的create语句...
    99+
    2022-11-12
  • Apache POI的基本使用详解
    目录基本介绍入门测试(从Excel文件读取数据)第一步:导入maven坐标第二步:创建Excel文件第三步:写测试代码代码说明及扩展入门测试(向Excel文件写入数据)基本介绍 POI pache POI是用j...
    99+
    2022-06-04
    Apache POI使用 Apache POI
  • Flask-Sqlalchemy的基本使用详解
    目录一: 基本使用:1:环境的安装:2:组件初始化:3:构建模型类:二:数据操作:1:增加数据:2:查询数据:3:修改数据:4:删除数据:三:高级机制:1:刷新数据:2:多表查询:一...
    99+
    2022-11-11
  • GoJs基本使用示例详解
    目录使用gojs背景gojs的引入去除水印使用gojs背景 因为公司业务需要,需要完成一个树形的关系图,并且在后续过程中会对树形关系图进行很多的交互来拓展树形图的展示。因此在研究了D...
    99+
    2023-05-16
    GoJs基本使用 GoJs 使用
  • pytorchDataLoaderj基本使用方法详解
    目录一、DataLoader理解二、DataLoader基本使用方法定义数据集定义DataLoader在训练过程中遍历DataLoader使用DataLoader实现多GPU训练三、...
    99+
    2023-05-17
    pytorch DataLoader基本方法 pytorch DataLoader
  • 详解python调度框架APScheduler使用
    最近在研究python调度框架APScheduler使用的路上,那么今天也算个学习笔记吧! # coding=utf-8 """ Demonstrates how to use the backgro...
    99+
    2022-06-04
    详解 框架 python
  • 详解Qt使用QImage类实现图像基本操作
    目录一、项目介绍二、项目基本配置三、UI界面设计四、主程序实现4.1 widget.h头文件4.2 widget.cpp源文件五、效果演示一、项目介绍 利用QImage类实现对图像的...
    99+
    2022-11-13
  • MongoDB Shell常用基本操作命令详解
    目录MongoDB Shell连接数据库库(database)的操作查看所有数据库test 库查看当前数据库删除数据库集合的基本操作创建集合查看集合删除集合其他 Shell 命令清屏退出 shell小结MongoDB S...
    99+
    2022-12-05
    MongoDB Shell操作命令 MongoDB Shell
  • MongoDB Shell常用基本操作命令详解
    目录MongoDB Shell连接数据库库(database)的操作查看所有数据库test 库查看当前数据库删除数据库集合的基本操作创建集合查看集合删除集合其他 Shell 命令清屏...
    99+
    2022-12-08
    MongoDB Shell操作命令 MongoDB Shell
  • Swagger及knife4j的基本使用详解
    目录Swagger以及knife4j基本使用Swagger 介绍:Restful 面向资源SpringBoot使用swaggerKnife4j --Swagger增强工具Swagge...
    99+
    2022-11-13
  • Android中layer-list基本使用详解
    使用layer-list可以将多个drawable按照顺序层叠在一起显示,默认情况下,所有的item中的drawable都会自动根据它附上view的大小而进行缩放, layer...
    99+
    2022-06-06
    list Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作