`
147175882
  • 浏览: 133987 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

quartz的Scheduler 动态增加、修改、删除定时任务的方法

 
阅读更多

变态的PM需求。虽然看上去很简单。但网上资源其实不多,走了不少弯路。分享一下。

 

quartz 的Scheduler 的主要代码

 

public void addSchduleJob(Task entity) throws SchedulerException {
		JobKey jobKeyA = new JobKey(entity.getId()+"");

    	JobDetail jobA = JobBuilder.newJob(com.baidu.lightapp.quartz.schedule.QuartzJob.class).usingJobData("id", entity.getId())
		.withIdentity(jobKeyA).build();

    	Trigger trigger1 = TriggerBuilder
		.newTrigger()
		.withIdentity(entity.getId()+"")
		.withSchedule(
			CronScheduleBuilder.cronSchedule(entity.getTitle()))
		.build();
 
    	Scheduler scheduler = localQuartzScheduler.getScheduler();
    	scheduler.scheduleJob(jobA, trigger1);
	}
	
	public void updateSchduleJob(Task entity) throws SchedulerException, ParseException {
		Scheduler scheduler = localQuartzScheduler.getScheduler();
	    TriggerKey triggerKey = new TriggerKey(entity.getId()+"");
	    CronTriggerImpl trigger = (CronTriggerImpl) scheduler.getTrigger(triggerKey);
	    
	    if (trigger == null) {
	    	addSchduleJob(entity);
	    } else {
		    trigger.setCronExpression(entity.getTitle());
		    scheduler.rescheduleJob(triggerKey, trigger);
	    }
	}
	
	public void deleteScheduleJob(Task entity) throws SchedulerException, ParseException {
		Scheduler scheduler = localQuartzScheduler.getScheduler();
		
	    TriggerKey triggerKey = new TriggerKey(entity.getId()+"");
	    CronTriggerImpl trigger = (CronTriggerImpl) scheduler.getTrigger(triggerKey);
	    if (trigger != null) {
			scheduler.unscheduleJob(triggerKey);
	    }
	}

 主要的业务类。需要继承org.quartz.Job

public class QuartzJob implements Job {

	private static final Logger logger = LoggerFactory.getLogger(QuartzJob.class);
	
	public QuartzJob() {
	}

	@Override
	public void execute(JobExecutionContext context)
			throws JobExecutionException {
		TaskService taskService = (TaskService)SpringContextHolderUtil.getBean("taskService");
		
		Task task = taskService.getTask(context.getJobDetail().getJobDataMap().getLong("id"));
		
		Long id = context.getJobDetail().getJobDataMap().getLong("id");
		logger.info("ID:{}, title:{}", task.getId(), task.getTitle());
		
		TaskLog taskLog = new TaskLog();
		taskLog.setTaskId(task.getId());
		
		// 请求操作BEGIN
		// TODO
		taskLog = mainJob(task, taskLog);
		
		
		// 请求操作END
		taskService.saveTaskLog(taskLog);
	}
	
	
	public TaskLog mainJob(Task task, TaskLog taskLog) {
		
		
		return taskLog;
	}
}

 

 

 

分享到:
评论

相关推荐

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

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

    quartz动态添加、修改和删除定时任务

    本教程将详细介绍如何动态地在Quartz中添加、修改和删除定时任务,以实现灵活的任务控制。 首先,我们需要理解Quartz的核心组件。主要有以下几个: 1. **Job**:这是执行任务的实际代码,代表一个可执行的工作单元...

    定时任务quartz实现分组串行并行动态配置

    本篇文章将深入探讨如何利用Quartz实现定时任务的分组、串行和并行动态配置。 首先,理解Quartz的核心概念是必要的。`Job`是执行任务的基本单元,`Trigger`则决定了何时触发Job。Quartz提供了`Scheduler`来管理和...

    Quartz.net作业调度自定义定时执行任务多任务执行c#

    Quartz.NET是一个强大的开源作业调度框架,用于在.NET环境中创建和执行定时任务。它提供了高度灵活的调度功能,使得开发者可以轻松地定义和控制任务的执行时间。在"Quartz.net作业调度自定义定时执行任务多任务执行...

    Springboot整合Quartz实现定时任务数据库动态配置

    现在我们可以编写一个`JobService`类,提供动态管理定时任务的方法,如新增、修改、暂停、恢复和删除任务。 ```java @Service public class JobService { private final Scheduler scheduler; private final ...

    spring+springMVC+mybatis+quartz动态定时任务创建

    它可以动态地添加、修改或删除定时任务,这在需要根据业务需求灵活调整任务执行时间的场景下非常有用。Quartz与Spring的集成使得任务的生命周期管理和并发控制变得更加便捷。 结合以上组件,开发者可以创建一个具有...

    quartz 动态执行定时任务

    ### quartz 动态执行定时任务 #### 背景与概念 在许多现代应用程序中,特别是在企业级应用中,往往需要实现对某些任务的周期性调度执行,例如定期备份数据库、定时发送邮件通知等。Quartz 是一个开源的作业调度...

    Spring整合quartz2.2.3总结,quartz动态定时任务,Quartz定时任务集群配置

    对于动态定时任务,Quartz提供了一种灵活的方式,允许在运行时添加、修改或删除任务。例如,可以创建一个服务接口,通过调用该接口来动态调整Trigger,从而达到改变任务执行频率或暂停任务的目的。 Quartz的集群...

    任务调度开源框架Quartz动态添加、修改和删除定时任务

    ### 任务调度开源框架Quartz动态添加、修改和删除定时任务 #### 一、Quartz框架简介 Quartz 是一个全面、开源的作业调度框架,为 Java 应用程序提供了简单而强大的作业调度机制。该框架支持多种类型的作业调度,...

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

    为了方便管理和监控定时任务,可以开发一个Web界面,利用Quartz提供的API查询Job和Trigger信息,支持新增、修改、删除等操作。此外,还可以查看任务执行日志,以便于排查问题。 总结,本Demo旨在通过SSM+Quartz的...

    Quartz1.7 动态添加、修改和删除定时任务(非spring集成版)

    1.7版本是其历史上的一个稳定版本,提供了丰富的API和功能,使得开发者能够灵活地实现定时任务的动态管理,包括添加、修改和删除。在不依赖Spring集成的情况下,我们依然可以充分利用Quartz的优势来构建自己的任务...

    springboot整合Quartz实现动态配置定时任务源码

    本篇文章将详细探讨如何在SpringBoot项目中整合Quartz,实现动态配置定时任务。 首先,我们需要在SpringBoot项目中引入Quartz的相关依赖。在`pom.xml`文件中添加以下Maven依赖: ```xml <groupId>org.spring...

    C# quartz.net 定时任务源码 可以远程控制

    【标题】"C# quartz.net 定时任务源码 可以远程控制"涉及的核心知识点主要集中在C#编程语言、Quartz.NET库以及系统服务的安装与管理。Quartz.NET是一个开源的作业调度框架,它允许开发人员在.NET环境中创建和执行...

    spring+quartz实现动态设置定时任务

    **动态设置定时任务** 意味着在应用程序运行过程中,我们可以根据业务需求动态地添加、删除或修改定时任务。这通常涉及到以下几个关键步骤: 1. **配置Quartz**:首先,在Spring配置文件中,我们需要声明一个`...

    Quartz 定时任务web使用

    - 也可以通过Quartz提供的API动态添加、修改、删除Job和Trigger。 - 使用Quartz的`SchedulerListener`和`JobListener`可以监听调度和任务执行的事件。 6. **源码分析** - 深入研究Quartz的源码,有助于理解其...

    SSH+quartz实现的可动态配置时间规则的定时任务

    SSH+quartz实现的可动态配置时间规则的定时任务是一个在IT行业中常见的需求,尤其是在企业级应用和服务中,为了实现自动化运维、数据处理或者业务触发等目的。SSH指的是Spring、Struts和Hibernate这三个Java开发框架...

    quartz spring动态定时任务,可以直接在tomcat上面部署运行

    Quartz和Spring结合实现动态定时任务是企业级应用中常见的一种技术组合,它允许开发者灵活地定义、管理和执行定时任务。Quartz是一个开源的作业调度框架,而Spring框架则为Java应用程序提供了强大的依赖注入(DI)和...

    springmvc基本配置及定时任务配置修改

    动态修改定时任务是 Quartz 的一个重要特性,这可以通过以下方式实现: 1. **更新 Trigger**:如果你想要改变一个已存在的 Trigger,可以调用 `TriggerBuilder` 的相应方法,然后使用 `scheduler.rescheduleJob()` ...

    dotnet-用abpvNext快速开发QuartzNET定时任务管理界面

    总结来说,通过abp vNext和Quartz.NET的结合,开发者可以快速构建出一个功能完善的定时任务管理系统,具备创建、修改、查看和控制任务的能力。这种方式极大地提高了开发效率,同时也使得任务调度的管理更加便捷。在...

    quartZ定时任务.zip

    SpringBoot与Quartz的集成使得在微服务环境中实现定时任务变得非常便捷。下面将详细介绍如何利用Quartz在SpringBoot项目中创建、管理和停止定时任务,并根据业务需求配置cron表达式来设定执行周期。 1. **Quartz...

Global site tag (gtag.js) - Google Analytics