`

Quartz2.x增、删、改工具类

阅读更多

 

package com.a2563;
 
import static org.quartz.CronScheduleBuilder.cronSchedule;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger;
 
import org.apache.logging.log4j.Logger;
import org.quartz.Job;
import org.quartz.JobDetail;
import org.quartz.JobKey;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.quartz.TriggerKey;
import org.quartz.impl.StdSchedulerFactory;
/**
 * 类名:QuartzManager <br/>
 * 功能:<br/>
 * 详细:Quartz增、删、改工具类 <br/>
 * 作者: Tliu <br/>
 * 日期:2015-7-17 <br/>
 */
public class QuartzUtils {
 
    private Logger log = null;
 
    private Scheduler scheduler = null;
     
    public static final String DATA_KEY = "STATE_DATA";
     
    public QuartzUtils (){
        try {
            log = org.apache.logging.log4j.LogManager.getLogger();
            scheduler = new StdSchedulerFactory().getScheduler();
            log.info("初始化调度器 ");
        } catch (SchedulerException ex) {
            log.error("初始化调度器=> [失败]:" + ex.getLocalizedMessage());
        }
    }   
    public void addJob(String name, String group, Class<? extends Job> clazz,String cronExpression) {                 
        try {       
            //构造任务
            JobDetail job = newJob(clazz)
                    .withIdentity(name, group)                  
                    .build();
             
            //构造任务触发器
            Trigger trg = newTrigger()
                    .withIdentity(name, group)
                    .withSchedule(cronSchedule(cronExpression))
                    .build();       
             
            //将作业添加到调度器
            scheduler.scheduleJob(job, trg);
            log.info("创建作业=> [作业名称:" + name + " 作业组:" + group + "] ");
        } catch (SchedulerException e) {
            e.printStackTrace();
            log.error("创建作业=> [作业名称:" + name + " 作业组:" + group + "]=> [失败]");
        }
    }
     
    public void removeJob(String name, String group){
        try {
            TriggerKey tk = TriggerKey.triggerKey(name, group);
            scheduler.pauseTrigger(tk);//停止触发器  
            scheduler.unscheduleJob(tk);//移除触发器
            JobKey jobKey = JobKey.jobKey(name, group);
            scheduler.deleteJob(jobKey);//删除作业
            log.info("删除作业=> [作业名称:" + name + " 作业组:" + group + "] ");
        } catch (SchedulerException e) {
            e.printStackTrace();
            log.error("删除作业=> [作业名称:" + name + " 作业组:" + group + "]=> [失败]");
        }
    }
     
    public void pauseJob(String name, String group){
        try {
            JobKey jobKey = JobKey.jobKey(name, group);
            scheduler.pauseJob(jobKey);
            log.info("暂停作业=> [作业名称:" + name + " 作业组:" + group + "] ");
        } catch (SchedulerException e) {
            e.printStackTrace();
            log.error("暂停作业=> [作业名称:" + name + " 作业组:" + group + "]=> [失败]");
        }
    }
     
    public void resumeJob(String name, String group){
        try {
            JobKey jobKey = JobKey.jobKey(name, group);         
            scheduler.resumeJob(jobKey);
            log.info("恢复作业=> [作业名称:" + name + " 作业组:" + group + "] ");
        } catch (SchedulerException e) {
            e.printStackTrace();
            log.error("恢复作业=> [作业名称:" + name + " 作业组:" + group + "]=> [失败]");
        }       
    }
     
    public void modifyTime(String name, String group, String cronExpression){       
        try {
            TriggerKey tk = TriggerKey.triggerKey(name, group);
            //构造任务触发器
            Trigger trg = newTrigger()
                    .withIdentity(name, group)
                    .withSchedule(cronSchedule(cronExpression))
                    .build();       
            scheduler.rescheduleJob(tk, trg);
            log.info("修改作业触发时间=> [作业名称:" + name + " 作业组:" + group + "] ");
        } catch (SchedulerException e) {
            e.printStackTrace();
            log.error("修改作业触发时间=> [作业名称:" + name + " 作业组:" + group + "]=> [失败]");
        }
    }
 
    public void start() {
        try {
            scheduler.start();
            log.info("启动调度器 ");
        } catch (SchedulerException e) {
            e.printStackTrace();
            log.error("启动调度器=> [失败]");
        }
    }
 
    public void shutdown() {
        try {
            scheduler.shutdown();
            log.info("停止调度器 ");
        } catch (SchedulerException e) {
            e.printStackTrace();
            log.error("停止调度器=> [失败]");
        }
    }
}

 

分享到:
评论

相关推荐

    Spring4.X+Quartz2.X

    Spring4.X与Quartz2.X是两个在企业级Java应用中广泛使用的开源框架。Spring是一个全面的、模块化的应用开发框架,它简化了Java EE应用的开发,提供了强大的依赖注入、AOP(面向切面编程)以及丰富的数据访问支持。而...

    quartz2.1.x帮助手册

    在Quartz 2.1.x版本中,这个强大的工具提供了许多关键功能和改进,以适应各种复杂的调度需求。本帮助手册将深入探讨这些特性和用法。 首先,Quartz的核心概念包括Job(工作)、Trigger(触发器)和Scheduler(调度...

    Spring2.x集成Quartz调度框架

    **Spring2.x集成Quartz调度框架** 在Java应用开发中,常常需要进行任务调度,例如定时执行某些业务逻辑。Quartz是一款强大的、开源的作业调度框架,它支持复杂的调度策略和集群环境。Spring框架则提供了良好的企业...

    Quartz.Net3.0.X代码

    通过以上信息,我们可以看到Quartz.Net3.0.X为.NET开发者提供了一套强大的工具来管理定时任务,它的灵活性、可靠性和易用性使其成为.NET平台上进行作业调度的理想选择。结合实际项目需求,开发者可以充分利用Quartz...

    Spring+3.x企业应用开发实战光盘源码,保证可用

    《Spring+3.x企业应用开发实战》是一本深入讲解如何使用Spring框架进行企业...总之,《Spring+3.x企业应用开发实战》的光盘源码为学习和掌握Spring 3.x框架提供了宝贵的实践资源,是提升Spring开发技能的重要辅助工具。

    springboot2.x书籍随书源代码.zip

    2. **WebFlux**:SpringBoot 2.x 引入了对Reactive编程的支持,通过WebFlux模块,可以构建非阻塞式的Web应用,提高系统性能和可伸缩性。 3. **Actuator增强**:Actuator是用于监控和管理SpringBoot应用的组件,在2....

    Spring+Quartz2

    在压缩包 "Spring3+Quartz2" 中,可能包含的是一个 Spring 3.x 版本与 Quartz2 结合使用的示例项目,你可以通过解压并运行该项目,学习如何在实际项目中实现类似的功能。记得根据你的具体需求进行适当的修改和配置。

    Quartz.NET-2.1.2_DLL文件.rar

    总的来说,"Quartz.NET-2.1.2_DLL文件.rar"是一个方便的工具,可以快速集成定时任务功能到你的.NET应用程序中,无论是简单的周期性任务还是复杂的调度逻辑,Quartz.NET都能提供灵活且强大的解决方案。只需简单地引入...

    spring3整合quartz1.8和spring3整合quartz2.2两个版本示例

    6. **配置 Scheduler**:创建 `SchedulerFactoryBean`,它是 Spring 提供的用于管理 Quartz Scheduler 的工具类,通过设置 JobDetails 和 Triggers,将它们绑定到 Scheduler 中。 7. **启动 Scheduler**:在应用...

    Programming with Quartz 2D and PDF Graphics in Mac OS X

    ### 关于《使用Quartz 2D与PDF图形在Mac OS X编程》的知识点解析 #### 一、Quartz 2D与PDF图形基础 **Quartz 2D**是苹果为Mac OS X和iOS提供的核心图形处理框架之一。它为开发者提供了高级的2D绘图功能,包括路径...

    Springboot2-Quartz 后台可动态配置的定时任务

    本项目“Springboot2-Quartz 后台可动态配置的定时任务”是基于SpringBoot 2.x版本与Quartz Scheduler整合的一个示例,它展示了如何在后台管理系统中动态地创建、更新和删除定时任务,以及监控这些任务的状态,为...

    Quartz新版的jar包

    1. **添加依赖**:将Quartz的jar包(如`quartz-x.x.x.jar`)添加到项目的类路径下,如果使用Maven或Gradle,需要在对应的配置文件中添加依赖。 2. **编写Job类**:创建一个实现`org.quartz.Job`接口的类,并重写`...

    spring4 quartz2 定时执行

    标题中的“spring4 quartz2 定时执行”指的是在Spring框架4.x版本中集成Quartz 2.x库来实现任务调度的功能。Quartz是一个开源的作业调度框架,它允许应用程序定义定时任务,而Spring框架则提供了与Quartz的无缝集成...

    quartz所需的基本jar包

    3. `common-lang3.jar`:Apache Commons Lang库,提供了一些Java语言的实用工具类。 4. `common-collections.jar`:Apache Commons Collections库,提供了集合操作的扩展。 在使用Quartz时,首先需要配置Scheduler...

    三个quartz官方包

    Quartz是一款广泛应用于Java环境...从基础的Job和Trigger创建,到复杂的调度策略和集群部署,Quartz都提供了强大的工具和灵活性。无论你是初学者还是经验丰富的开发者,都可以通过这个资源进一步提升你的任务调度能力。

    spring和quartz的定时器的启动和停止例子

    在IT行业中,Spring框架和Quartz是两个广泛用于任务调度的重要工具。Spring提供了一种集成Quartz的方式,使得我们可以方便地在Spring应用中管理和执行定时任务。本篇将深入探讨如何在Spring中启动和停止Quartz定时器...

    spring4+quartz2基本配置及应用

    《Spring4与Quartz2整合应用详解》 在企业级应用开发中,任务调度是一项重要的功能,用于执行定时任务,例如数据同步、报表生成等。Spring4和Quartz2是两个常用的开源框架,Spring提供了强大的依赖注入和面向切面...

    Quartz2D基础绘画

    2. **坐标系统**:Quartz2D使用笛卡尔坐标系统,原点位于视图的左上角,X轴向右延伸,Y轴向下延伸。你可以通过修改坐标系统来适应不同的布局需求。 3. **路径(Paths)**:路径是由直线、曲线和封闭形状组成的几何...

    iOS Quartz2D详解 - imlifengfeng1

    总之,Quartz2D是iOS开发中的一个重要工具,它让我们能够实现高度定制的用户界面,创造出独特且富有表现力的应用程序。通过熟练掌握Quartz2D,开发者可以提升应用的用户体验,打造引人入胜的视觉效果。

    spring3.x企业应用实战开发-源码

    《Spring 3.x 企业应用实战开发-源码》是一份深入探讨Spring框架在实际企业应用中的实践指南,其中包含了从第二章到第十九章的完整源代码。这份资料是学习和理解Spring 3.x核心特性和实际应用场景的宝贵资源。下面...

Global site tag (gtag.js) - Google Analytics