变态的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 后台可动态配置的定时任务”是基于SpringBoot 2.x版本与Quartz Scheduler整合的一个示例,它展示了如何在后台管理系统中动态地创建、更新和删除定时任务,以及监控这些任务的状态,为...
本教程将详细介绍如何动态地在Quartz中添加、修改和删除定时任务,以实现灵活的任务控制。 首先,我们需要理解Quartz的核心组件。主要有以下几个: 1. **Job**:这是执行任务的实际代码,代表一个可执行的工作单元...
本篇文章将深入探讨如何利用Quartz实现定时任务的分组、串行和并行动态配置。 首先,理解Quartz的核心概念是必要的。`Job`是执行任务的基本单元,`Trigger`则决定了何时触发Job。Quartz提供了`Scheduler`来管理和...
Quartz.NET是一个强大的开源作业调度框架,用于在.NET环境中创建和执行定时任务。它提供了高度灵活的调度功能,使得开发者可以轻松地定义和控制任务的执行时间。在"Quartz.net作业调度自定义定时执行任务多任务执行...
现在我们可以编写一个`JobService`类,提供动态管理定时任务的方法,如新增、修改、暂停、恢复和删除任务。 ```java @Service public class JobService { private final Scheduler scheduler; private final ...
它可以动态地添加、修改或删除定时任务,这在需要根据业务需求灵活调整任务执行时间的场景下非常有用。Quartz与Spring的集成使得任务的生命周期管理和并发控制变得更加便捷。 结合以上组件,开发者可以创建一个具有...
### quartz 动态执行定时任务 #### 背景与概念 在许多现代应用程序中,特别是在企业级应用中,往往需要实现对某些任务的周期性调度执行,例如定期备份数据库、定时发送邮件通知等。Quartz 是一个开源的作业调度...
对于动态定时任务,Quartz提供了一种灵活的方式,允许在运行时添加、修改或删除任务。例如,可以创建一个服务接口,通过调用该接口来动态调整Trigger,从而达到改变任务执行频率或暂停任务的目的。 Quartz的集群...
### 任务调度开源框架Quartz动态添加、修改和删除定时任务 #### 一、Quartz框架简介 Quartz 是一个全面、开源的作业调度框架,为 Java 应用程序提供了简单而强大的作业调度机制。该框架支持多种类型的作业调度,...
为了方便管理和监控定时任务,可以开发一个Web界面,利用Quartz提供的API查询Job和Trigger信息,支持新增、修改、删除等操作。此外,还可以查看任务执行日志,以便于排查问题。 总结,本Demo旨在通过SSM+Quartz的...
1.7版本是其历史上的一个稳定版本,提供了丰富的API和功能,使得开发者能够灵活地实现定时任务的动态管理,包括添加、修改和删除。在不依赖Spring集成的情况下,我们依然可以充分利用Quartz的优势来构建自己的任务...
本篇文章将详细探讨如何在SpringBoot项目中整合Quartz,实现动态配置定时任务。 首先,我们需要在SpringBoot项目中引入Quartz的相关依赖。在`pom.xml`文件中添加以下Maven依赖: ```xml <groupId>org.spring...
【标题】"C# quartz.net 定时任务源码 可以远程控制"涉及的核心知识点主要集中在C#编程语言、Quartz.NET库以及系统服务的安装与管理。Quartz.NET是一个开源的作业调度框架,它允许开发人员在.NET环境中创建和执行...
**动态设置定时任务** 意味着在应用程序运行过程中,我们可以根据业务需求动态地添加、删除或修改定时任务。这通常涉及到以下几个关键步骤: 1. **配置Quartz**:首先,在Spring配置文件中,我们需要声明一个`...
- 也可以通过Quartz提供的API动态添加、修改、删除Job和Trigger。 - 使用Quartz的`SchedulerListener`和`JobListener`可以监听调度和任务执行的事件。 6. **源码分析** - 深入研究Quartz的源码,有助于理解其...
SSH+quartz实现的可动态配置时间规则的定时任务是一个在IT行业中常见的需求,尤其是在企业级应用和服务中,为了实现自动化运维、数据处理或者业务触发等目的。SSH指的是Spring、Struts和Hibernate这三个Java开发框架...
Quartz和Spring结合实现动态定时任务是企业级应用中常见的一种技术组合,它允许开发者灵活地定义、管理和执行定时任务。Quartz是一个开源的作业调度框架,而Spring框架则为Java应用程序提供了强大的依赖注入(DI)和...
动态修改定时任务是 Quartz 的一个重要特性,这可以通过以下方式实现: 1. **更新 Trigger**:如果你想要改变一个已存在的 Trigger,可以调用 `TriggerBuilder` 的相应方法,然后使用 `scheduler.rescheduleJob()` ...
总结来说,通过abp vNext和Quartz.NET的结合,开发者可以快速构建出一个功能完善的定时任务管理系统,具备创建、修改、查看和控制任务的能力。这种方式极大地提高了开发效率,同时也使得任务调度的管理更加便捷。在...
SpringBoot与Quartz的集成使得在微服务环境中实现定时任务变得非常便捷。下面将详细介绍如何利用Quartz在SpringBoot项目中创建、管理和停止定时任务,并根据业务需求配置cron表达式来设定执行周期。 1. **Quartz...