`
xiaoyaoke08
  • 浏览: 100096 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Quarz 配置(一) - JobDetail

阅读更多

 

Quartz是一个开源的作业调度框架,完全由java写的,你能通过它创建简单或者复杂的任务。他能提供巨大的灵活性,但又不牺牲简单性。

 

Quartz的核心概念 :调度器、触发器、作业 

调度器(Scheduler)

Scheduler负责管理Quartz的运行环境,Quartz它是基于多线程架构的,它启动的时候会初始化一套线程,这套线程会用来执行一些预置的作业。

要创建一个作业并能够被触发调用,必须在Scheduler上面注册一个JobDetailTrigger

Scheduler提携了所有TriggerJobDetail,使它们协调工作。这些TriggerJobDetail通过自身的namegroup属性区分

       Scheduler SchedulerFactory产生,我们可以通过以下方式获取Scheduler的实例:

     //ServletContext上下文中查找SchedulerFactory

     SchedulerFactory   factory = (SchedulerFactory)

ServletActionContext.getServletContext().getAttribute("org.quartz.impl.StdSchedulerFactory.KEY");

 

   //获取Scheduler对象

   Scheduler defScheduler = factory.getScheduler();

作业

Job

任务,其实就是一个接口。要创建一个任务,必须得实现这个接口。该接口只有一个execute方法,任务每次被调用的时候都会执行这个execute方法的逻辑。

public class TestJob impletemens org.quartz.Job{

         @Override

         public void execute(JobExecutionContext context) throws JobExecutionException{

                   // you business logic

                   // …

                 System.out.println("########### this is testJob running  ############");

     }

}

 

JobDetail

JobDetail 用来保存我们作业的详细信息。一个JobDetail可以有多个Trigger,但是一个Trigger只能对应一个JobDetail。下面是JobDetail的一些常用的属性和含义

 

 

参数名

类型

备注

name

String

任务的名称,必须

group

String

任务所在组,默认为DEFAULT

jobClass

Class

任务的实现类,必须

description

String

描述

jobDataMap

JobDataMap

用来给作业提供数据支持的数据结构

volatility

Boolean

重启应用之后是否删除任务的相关信息,默认false

durability

Boolean

任务完成之后是否依然保留到数据库,默认false

shouldRecover

Boolean

应用重启之后时候忽略过期任务,默认false

jobListeners

Set

监听器

 

JobDataMap

这是一个给作业提供数据支持的数据结构,使用方法和java.util.Map一样,非常方便。当一个作业被分配给调度器时,JobDataMap实例就随之生成。

Job有一个StatefulJob子接口,代表有状态的任务,该接口是一个没有方法的标签接口,其目的是让Quartz知道任务的类型,以便采用不同的执行方案。无状态任务在执行时拥有自己的JobDataMap拷贝,对JobDataMap的更改不会影响下次的执行。而有状态任务共享共享同一个JobDataMap实例,每次任务执行对JobDataMap所做的更改会保存下来,后面的执行可以看到这个更改,也即每次执行任务后都会对后面的执行发生影响。

正因为这个原因,无状态的Job可以并发执行,而有状态的StatefulJob不能并发执行,这意味着如果前次的StatefulJob还没有执行完毕,下一次的任务将阻塞等待,直到前次任务执行完毕。有状态任务比无状态任务需要考虑更多的因素,程序往往拥有更高的复杂度,因此除非必要,应该尽量使用无状态的Job

如果Quartz使用了数据库持久化任务调度信息,无状态的JobDataMap仅会在Scheduler注册任务时保持一次,而有状态任务对应的JobDataMap在每次执行任务后都会进行保存。

JobDataMap实例也可以与一个触发器相关联。这种情况下,对于同一作业的不同触发器,我们可以在JobDataMap中添加不同的数据,以便作业在不同时间执行时能够提供更为灵活的数据支持(学校上午放眼保健操录音第一版,下午放第二版)。

不管是有状态还是无状态的任务,在任务执行期间对TriggerJobDataMap所做的更改都不会进行持久,也即不会对下次的执行产生影响。

 

 

 

分享到:
评论

相关推荐

    quartz-all-1.6.0.jar包定时任务jar

    通过灵活的配置,Quartz能够满足大部分定时任务的需求,且易于扩展和维护。不过,需要注意的是,随着任务数量的增加,调度器的性能和内存消耗也会上升,因此在大型系统中需要合理规划和优化任务调度。

    quartzall1.6.0jar_quartz-all-1.6.0.jar_

    6. **集群支持**:Quartz可以配置在多台服务器上运行,形成一个集群,这样可以提高系统的可用性和容错性。当一台服务器出现问题时,其他服务器可以接管任务。 7. **API友好**:Quartz提供了简单易用的API,使得...

    quartz-2.3.0-distribution.zip

    Quartz是Java领域的一款强大的开源任务调度框架,广泛应用于各种基于Java的应用系统中,用于执行定时任务。在SpringBoot框架中,Quartz可以方便地集成,实现应用的定时任务管理。"quartz-2.3.0-distribution.zip"这...

    quartz和spring-quartz

    通过JobDetail来配置Job的属性,如Job的名称、组别、数据绑定等。 2. **Trigger**: 触发器决定了Job的执行时间。Quartz提供了多种Trigger类型,如SimpleTrigger(简单触发器)用于一次性或间隔执行,CronTrigger...

    quartz-2.3.0-distribution.tar.gz

    Quartz 是一个强大的开源作业调度框架,专为 Java 平台设计,无论是 J2SE 还是 J2EE 应用程序,都能轻松集成。它的核心功能在于允许开发者定义任务和调度策略,使得应用程序能够在预定的时间执行特定的任务,极大地...

    quartz-2.2.2-distribution.rar

    在这个配置类中,我们创建了 JobDetail 和 CronTrigger 的 Bean,并将其注入到 SchedulerFactoryBean 中,这样 Spring Boot 就会在启动时自动初始化并运行 Quartz 调度器。 在 "example 和 demo" 部分,通常会包含...

    quartz-2.2.3-distribution.zip

    Quartz是一个开源的作业调度框架,它允许开发者在Java应用程序中安排任务的执行。这个"quartz-2.2.3-distribution.zip"文件包含了Quartz库的2.2.3版本的所有组件和文档,方便用户进行开发和部署。下面我们将深入探讨...

    spring-context-support.jar,quartz-all-1.6.0.jar

    集成Quartz到Spring项目中,首先需要在Spring的配置文件中定义一个`SchedulerFactoryBean`,这将负责创建和管理Quartz的`Scheduler`实例。然后,我们可以创建一个实现`Job`接口的类来定义任务逻辑,并使用`...

    quartz-2.1.6.zip

    在Spring中使用Quartz,首先需要配置SchedulerFactoryBean,然后定义JobDetail和Trigger,将它们绑定在一起并添加到Scheduler中。Spring的依赖注入特性允许将业务逻辑封装在bean中,然后由Quartz按需调用。此外,还...

    Multiple-Jobs-in-Quartz-Spring-Example

    Spring 提供了一个 `SchedulerFactoryBean`,它负责初始化和管理 Quartz 的 Scheduler 实例,并自动将我们的 Job 和 Trigger 配置进去。 ```java @Bean(destroyMethod = "shutdown") public Scheduler scheduler...

    Spring中的Quartz配置-Spring-定时器-java定时器.doc

    【Spring中的Quartz配置-Spring-定时器-java定时器】 在Java开发中,Spring框架提供了对定时任务的支持,其中就包括了对Quartz库的集成。Quartz是一款强大的任务调度库,可以用来创建、调度和执行定时任务。下面将...

    quartz-2.2.3-官方文档数据及PDM表结构.zip

    7. **API使用**:Quartz提供了丰富的API,例如`Scheduler`接口、`JobDetail`类、`Trigger`接口等,开发者可以通过这些API来编程式地操作调度器。 8. **配置(Configuration)**:Quartz的配置主要通过`quartz....

    Quartz-Job-Scheduling-Framework-中文版-V0.9.1.zip

    内容提要:配置、创建并运行 Quartz RMI 端户端,演示了 Quartz RMI 客户端通过远程调度器部署一个 Job 的 的例子。 第十章. J2EE 中使用 Quartz (第一部分) 内容提要:J2EE 中引入 Quartz。在 J2EE 环境中作为 ...

    Quartz.NetUI-master.zip

    Quartz.NET的核心概念包括Job、Trigger、Scheduler和JobDetail。 2. **.NET Core支持** 这个案例使用的是.NET Core,这是一个跨平台的开发框架,使得Quartz.NET可以在Windows、Linux、macOS等操作系统上运行。.NET...

    spring3.0+quartz-1.6.0定时

    Spring 3.0 和 Quartz ...首先,你需要在Spring配置文件中声明一个`SchedulerFactoryBean`,这将初始化并管理Quartz调度器。然后,通过定义`JobDetail`和`Trigger`,你可以将Spring的bean作为任务来调度。 ```xml ...

    Spring Quartz定时器的jar包

    2. 配置Spring的ApplicationContext,声明Quartz相关的bean,如SchedulerFactoryBean、JobDetail和Trigger。 3. 定义Job类,实现`org.quartz.Job`接口,定义任务的具体逻辑。 4. 创建Trigger,指定Job的执行策略,...

    Spring Quartz 定时器示例(Java工程版)

    Spring Quartz 是一个强大的任务调度框架,它允许开发者在Java应用程序中定义定时任务。这个示例提供了在Spring框架中集成Quartz的详细步骤,适合Java工程的实现。下面将详细介绍Spring与Quartz结合使用的相关知识点...

    quartz-2.2 需要的jar以及src源代码

    Quartz是Java领域一个广泛应用的开源任务调度框架,它的核心功能是允许开发者安排任务在特定时间执行,或者按一定间隔重复执行。这个压缩包“quartz-2.2.3”包含了Quartz库的jar文件以及源代码,这对于开发者理解和...

    quartz-1.6.0任务调试

    Quartz是一个开源的作业调度框架,它允许程序在预定的时间执行特定的任务,广泛应用于Java企业级应用中。在"quartz-1.6.0任务调试"中,我们需要理解Quartz的基本概念、配置以及如何进行任务的调试。 首先,Quartz的...

    quartz-1.8.6.tar

    在Quartz中,作业和触发器通过“作业细节”(JobDetail)和“触发器细节”(TriggerDetail)进行配置,并存入“作业存储”(JobStore)。作业存储可以是内存中的,也可以持久化到数据库,确保服务器重启后任务调度不...

Global site tag (gtag.js) - Google Analytics