`

Quartz管理类

阅读更多
package com.sihuatech.project.task.manager;

import java.text.ParseException;

import org.quartz.CronTrigger;
import org.quartz.Job;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;

/**
 * @Title:Quartz管理类
 * 
 * @Description:
 * 
 * @Copyright:
 * @author lei 2008-10-8 14:19:01
 * @version 1.00.000
 * 
 */
public class QuartzManager {
	private static SchedulerFactory sf = new StdSchedulerFactory();
	private static String JOB_GROUP_NAME = "group1";
	private static String TRIGGER_GROUP_NAME = "trigger1";

	private static QuartzManager quartzManager;

	public static QuartzManager getInstance() {
		if (quartzManager == null) {
			quartzManager = new QuartzManager();
		}
		return quartzManager;
	}

	private QuartzManager() {

	}

	/**
	 * 添加一个定时任务,使用默认的任务组名,触发器名,触发器组名
	 * 
	 * @param jobName
	 *            任务名
	 * @param job
	 *            任务
	 * @param time
	 *            时间设置,参考quartz说明文档
	 * @throws SchedulerException
	 * @throws ParseException
	 */
	public static void addJob(String jobName, Job job, String time) throws SchedulerException, ParseException {
		Scheduler sched = sf.getScheduler();
		JobDetail jobDetail = new JobDetail(jobName, JOB_GROUP_NAME, job.getClass());// 任务名,任务组,任务执行类
		// 触发器
		CronTrigger trigger = new CronTrigger(jobName, TRIGGER_GROUP_NAME);// 触发器名,触发器组
		trigger.setCronExpression(time);// 触发器时间设定
		sched.scheduleJob(jobDetail, trigger);
		// 启动
		if (!sched.isShutdown())
			sched.start();
	}

	/**
	 * 添加一个定时任务
	 * 
	 * @param jobName
	 *            任务名
	 * @param jobGroupName
	 *            任务组名
	 * @param triggerName
	 *            触发器名
	 * @param triggerGroupName
	 *            触发器组名
	 * @param job
	 *            任务
	 * @param time
	 *            时间设置,参考quartz说明文档
	 * @throws SchedulerException
	 * @throws ParseException
	 */
	public static void addJob(String jobName, String jobGroupName, String triggerName, String triggerGroupName, Job job, String time) throws SchedulerException, ParseException {
		Scheduler sched = sf.getScheduler();
		JobDetail jobDetail = new JobDetail(jobName, jobGroupName, job.getClass());// 任务名,任务组,任务执行类
		// 触发器
		CronTrigger trigger = new CronTrigger(triggerName, triggerGroupName);// 触发器名,触发器组
		trigger.setCronExpression(time);// 触发器时间设定
		sched.scheduleJob(jobDetail, trigger);
		if (!sched.isShutdown())
			sched.start();
	}

	/**
	 * 修改一个任务的触发时间(使用默认的任务组名,触发器名,触发器组名)
	 * 
	 * @param jobName
	 * @param time
	 * @throws SchedulerException
	 * @throws ParseException
	 */
	public static void modifyJobTime(String jobName, String time) throws SchedulerException, ParseException {
		Scheduler sched = sf.getScheduler();
		Trigger trigger = sched.getTrigger(jobName, TRIGGER_GROUP_NAME);
		if (trigger != null) {
			CronTrigger ct = (CronTrigger) trigger;
			ct.setCronExpression(time);
			sched.resumeTrigger(jobName, TRIGGER_GROUP_NAME);
		}
	}

	/**
	 * 修改一个任务的触发时间
	 * 
	 * @param triggerName
	 * @param triggerGroupName
	 * @param time
	 * @throws SchedulerException
	 * @throws ParseException
	 */
	public static void modifyJobTime(String triggerName, String triggerGroupName, String time) throws SchedulerException, ParseException {
		Scheduler sched = sf.getScheduler();
		Trigger trigger = sched.getTrigger(triggerName, triggerGroupName);
		if (trigger != null) {
			CronTrigger ct = (CronTrigger) trigger;
			// 修改时间
			ct.setCronExpression(time);
			// 重启触发器
			sched.resumeTrigger(triggerName, triggerGroupName);
		}
	}

	/**
	 * 移除一个任务(使用默认的任务组名,触发器名,触发器组名)
	 * 
	 * @param jobName
	 * @throws SchedulerException
	 */
	public static void removeJob(String jobName) throws SchedulerException {
		Scheduler sched = sf.getScheduler();
		sched.pauseTrigger(jobName, TRIGGER_GROUP_NAME);// 停止触发器
		sched.unscheduleJob(jobName, TRIGGER_GROUP_NAME);// 移除触发器
		sched.deleteJob(jobName, JOB_GROUP_NAME);// 删除任务
	}

	/**
	 * 移除一个任务
	 * 
	 * @param jobName
	 * @param jobGroupName
	 * @param triggerName
	 * @param triggerGroupName
	 * @throws SchedulerException
	 */
	public static void removeJob(String jobName, String jobGroupName, String triggerName, String triggerGroupName) throws SchedulerException {
		Scheduler sched = sf.getScheduler();
		sched.pauseTrigger(triggerName, triggerGroupName);// 停止触发器
		sched.unscheduleJob(triggerName, triggerGroupName);// 移除触发器
		sched.deleteJob(jobName, jobGroupName);// 删除任务
	}
}
 
分享到:
评论

相关推荐

    quartz界面化持久化管理

    【标题】:Quartz界面化持久化管理 【描述】:Quartz是一个开源的作业调度框架,用于在Java应用程序中创建和执行计划任务。通过结合文章《quartz界面化持久化管理》(链接:...

    定时器Quartz.net2.0内置操作类

    在描述中提到的"内置操作类",通常指的是Quartz.NET中的辅助类,例如`SchedulerFactory`、`JobBuilder`、`TriggerBuilder`等,这些类使得创建和管理调度任务变得非常简单。例如,`SchedulerFactory`可以用来获取`...

    quartz动态任务管理

    这个"quartz动态任务管理"源码包很可能是针对Quartz框架的实现,旨在帮助开发者更方便地管理和控制任务的生命周期。 Quartz的核心概念包括作业(Job)、触发器(Trigger)和计划程序(Scheduler)。作业是你要执行...

    基于SSM+quartz的定时任务管理demo

    【SSM+Quartz 定时任务管理Demo详解】 在Java Web开发中,定时任务是一项常见且重要的功能,用于执行一些周期性或者特定时间点的任务,例如数据统计、备份、清理等。本Demo以"基于SSM+quartz的定时任务管理"为主题...

    QuartzManager

    quartz 管理类的java文件,job的添加,删除,暂停恢复等

    Quartz任务监控管理

    在这个名为"Quartz任务监控管理"的项目包中,我们可以预期找到以下几个核心知识点: 1. **Quartz基础知识**:Quartz的核心概念包括Job(作业)、Trigger(触发器)和Scheduler(调度器)。Job是待执行的任务,...

    quartzdemo

    - Quartz提供Web管理界面`QuartzAdmin`,方便查看和管理任务。 - 通过API动态添加、修改、删除Job和Trigger。 7. **异常处理**: - Job执行时可能抛出异常,需要捕获并处理,避免影响其他任务执行。 8. **Job...

    WEB管理的Quartz定时任务

    在Quartz中,任务是通过实现`org.quartz.Job`接口的类来定义的。你需要重写`execute(JobExecutionContext context)`方法来编写实际的业务逻辑。而触发器则负责决定任务何时执行,可以是简单触发器、cron触发器或其他...

    spring boot + quartz 动态管理 分布式

    这些资源可能包括Quartz的Job类定义、Spring Boot的配置文件(application.properties或application.yml)、数据库模型和迁移脚本、以及用于演示动态管理任务的控制器和服务类代码。开发者可以研究这些文件,了解...

    Quartz任务调度管理

    ### Quartz任务调度管理 #### 一、任务调度基础概念 任务调度是指系统按照预先设定的时间规则来自动执行特定任务的功能。这种机制广泛应用于各种场景,例如数据备份、定期检查资源状态、发送邮件通知等。 ##### ...

    Spring 4.2 集成 Quartz2 任务调度示例

    在Spring中,你可以定义一个实现了`org.springframework.scheduling.quartz.JobDetailBean`的类来表示一个任务,然后通过`CronTriggerBean`或`SimpleTriggerBean`定义触发规则。 ```java @Bean public ...

    C# Quartz.Net定时任务操作明细、完整过程

    【C# Quartz.Net定时任务操作】Quartz.Net是一款强大的任务调度框架,广泛应用于C#环境下的定时任务管理。本文将详细介绍如何使用Quartz.Net进行定时任务的配置与执行。 首先,**通过Nuget安装框架**非常简单,只需...

    springboot2.3集成quartz定时任务持久化数据库,支持集群

    总结来说,Spring Boot 2.3与Quartz的集成使得我们可以轻松创建和管理定时任务。通过持久化到数据库并启用集群模式,我们可以确保在多节点环境中任务的正确性和一致性。在实际应用中,你可以根据需求调整任务的触发...

    quartz实例,quartz入门例子

    1. **Job**:工作,它是实际要执行的任务,可以定义一个Java类实现`org.quartz.Job`接口来创建Job。 2. **Trigger**:触发器,决定Job何时执行。Quartz提供了多种类型的Trigger,如SimpleTrigger(简单触发器)和...

    quartz调度系统工具.zip

    这个"quartz调度系统工具.zip"文件很可能包含了用于简化Quartz配置和管理的实用工具。 Quartz的核心概念包括: 1. **作业(Jobs)**:是实际执行的工作单元,开发者需要自定义Job类来实现特定的任务逻辑。 2. **...

    任务管理API quartz

    Quartz API提供了一系列接口和类,使得开发者能够方便地定义任务(Job)和触发器(Trigger),并将其纳入到调度系统中。主要的类和接口包括: 1. Job:这是所有任务的基类,定义了任务执行的核心逻辑。开发者需要...

    Android studio下的quartz工程

    在Android中,你需要创建一个实现了`org.quartz.Job`接口的类来定义你的任务。例如: ```java import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public ...

    quartz和spring-quartz

    Quartz和Spring-Quartz是两个在Java世界中广泛使用的定时任务管理框架。Quartz是一个开源的作业调度框架,允许应用程序定义和调度任务在特定时间执行。而Spring-Quartz则是Spring框架对Quartz的集成,它使得在Spring...

    quartz-2.2.3

    Quartz是Java领域中广泛应用的一款开源任务调度框架,它的2.2.3版本是一个重要的更新,为开发者提供了灵活且强大的定时任务管理能力。这个压缩包中包含了Quartz库的jar包,以及相关的数据库表结构和示例代码,帮助...

    Quartz所需jar包

    "Quartz所需jar包"是使用Quartz库进行开发时必不可少的组件,包含了Quartz运行所需的类和库。 在Java项目中引入Quartz库,首先你需要下载或从资源中获取这些jar包。"Quartz所需包"很可能包含了以下关键文件: 1. `...

Global site tag (gtag.js) - Google Analytics