Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间)
-
quartz_Cron表达式一分钟教程
09-05 -
quartz定时任务中常用的cron表达式
05-08 -
Quartz2实现任务的临时启动/暂停/恢复
05-17 -
quartz 获取正在执行的任务
12-20 -
在spring中实现quartz的动态调度(开始、暂停、停止等)
09-04 -
SpringQuartz定时任务的cron表达式书写
09-17 -
定时任务Quartz_之_cron表达式(时间表达式)
07-18 -
查看Quartz 调度任务 job 的状态
02-07 -
Quartz-基础
06-25 -
spring quartz 根据开始时间 结束时间 动态设置任务
08-28 -
Quartz任务调度原理简析
05-30 -
Quartz_Cron表达式_每周、每月执行一次
09-04 -
得到quartz中Job的执行状态
11-09 -
quartz定时:修改时间及时生效的定时任务
08-16 -
Quartz任务调度的Cron表达式
09-30 -
cron表达式(Quartz中的使用)
01-03 -
quartz_时间表达式之Cron表达式详解
08-16 -
quartz中cron表达式
10-25 -
quartz任务停止最佳实践方式
03-06 -
Spring+Quartz 实现任务动态管理监控
12-20 -
Quartz-中断正在执行的任务
11-15 -
spring-boot+quartz的CRUD动态任务管理系统
04-03 -
Quartz_Cron表达式(定时任务)
05-11 -
java时间操作
05-31 -
TimeUtil工具类
12-04 -
随机生成日期
12-11 -
quartz2.x的动态管理类
12-07 -
去除节假日,周末,获取当月的工作日
06-05 -
-
java_日期的操作汇总
11-03 -
DateUtil
06-06 -
cron表达式获取上次执行时间和下次执行时间
12-28 -
POI导出excel表格优化
10-15 -
java_时间处理
12-04 -
JAVA获取某段时间内的所有日期
10-11 -
逐页缓存查询(串行,避免OOM)导出Excel,zip压缩
07-31
Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间)
本案例采用quartz-2.2.3.jar
入门案例,执行比较简单的任务
QuartzManager.java (任务的管理)
-
import java.text.ParseException;
-
import java.text.SimpleDateFormat;
-
import java.util.ArrayList;
-
import java.util.Date;
-
import java.util.List;
-
-
import org.quartz.CronScheduleBuilder;
-
import org.quartz.CronTrigger;
-
import org.quartz.JobBuilder;
-
import org.quartz.JobDetail;
-
import org.quartz.JobKey;
-
import org.quartz.Scheduler;
-
import org.quartz.SchedulerException;
-
import org.quartz.SchedulerFactory;
-
import org.quartz.Trigger;
-
import org.quartz.Trigger.TriggerState;
-
import org.quartz.TriggerBuilder;
-
import org.quartz.TriggerKey;
-
import org.quartz.TriggerUtils;
-
import org.quartz.impl.StdSchedulerFactory;
-
import org.quartz.impl.triggers.CronTriggerImpl;
-
-
public class QuartzManager {
-
-
private static SchedulerFactory gSchedulerFactory = new StdSchedulerFactory();
-
private static String JOB_GROUP_NAME = "MY_JOBGROUP_NAME";
-
private static String TRIGGER_GROUP_NAME = "MY_TRIGGERGROUP_NAME";
-
-
/**
-
* @Description: 添加一个定时任务,使用默认的任务组名,触发器名,触发器组名
-
* @param jobName
-
* 任务名
-
* @param cls
-
* 任务
-
* @param time
-
* 时间设置,参考quartz说明文档
-
*/
-
-
public static void addJob(String jobName, Class cls, String cron) {
-
try {
-
Scheduler sched = gSchedulerFactory.getScheduler();
-
JobDetail job = JobBuilder.newJob(cls).withIdentity(jobName, JOB_GROUP_NAME).build();
-
// 表达式调度构建器
-
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cron);
-
// 按新的cronExpression表达式构建一个新的trigger
-
Trigger trigger = TriggerBuilder.newTrigger().withIdentity(jobName, TRIGGER_GROUP_NAME)
-
.withSchedule(scheduleBuilder).build();
-
-
// 交给scheduler去调度
-
sched.scheduleJob(job, trigger);
-
-
// 启动
-
if (!sched.isShutdown()) {
-
sched.start();
-
System.err.println("添加任务:"+jobName);
-
}
-
} catch (Exception e) {
-
throw new RuntimeException(e);
-
}
-
}
-
-
/**
-
* @Description: 添加一个定时任务
-
* @param jobName
-
* 任务名
-
* @param jobGroupName
-
* 任务组名
-
* @param triggerName
-
* 触发器名
-
* @param triggerGroupName
-
* 触发器组名
-
* @param jobClass
-
* 任务
-
* @param time
-
* 时间设置,参考quartz说明文档
-
*/
-
-
public static void addJob(String jobName, String jobGroupName, String triggerName, String triggerGroupName,
-
Class jobClass, String cron) {
-
try {
-
Scheduler sched = gSchedulerFactory.getScheduler();
-
JobDetail job = JobBuilder.newJob(jobClass).withIdentity(jobName, jobGroupName).build();
-
// 表达式调度构建器
-
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cron);
-
// 按新的cronExpression表达式构建一个新的trigger
-
Trigger trigger = TriggerBuilder.newTrigger().withIdentity(triggerName, triggerGroupName)
-
.withSchedule(scheduleBuilder).build();
-
sched.scheduleJob(job, trigger);
-
// 启动
-
if (!sched.isShutdown()) {
-
sched.start();
-
}
-
} catch (Exception e) {
-
throw new RuntimeException(e);
-
}
-
}
-
-
/**
-
* @Description: 修改一个任务的触发时间(使用默认的任务组名,触发器名,触发器组名)
-
* @param jobName
-
* @param time
-
*/
-
public static void modifyJobTime(String jobName, String cron) {
-
TriggerKey triggerKey = TriggerKey.triggerKey(jobName, TRIGGER_GROUP_NAME);
-
-
try {
-
Scheduler sched = gSchedulerFactory.getScheduler();
-
CronTrigger trigger = (CronTrigger) sched.getTrigger(triggerKey);
-
if (trigger == null) {
-
return;
-
}
-
String oldTime = trigger.getCronExpression();
-
if (!oldTime.equalsIgnoreCase(cron)) {
-
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cron);
-
// 按新的cronExpression表达式重新构建trigger
-
trigger = trigger.getTriggerBuilder().withIdentity(triggerKey).withSchedule(scheduleBuilder).build();
-
// 按新的trigger重新设置job执行
-
sched.rescheduleJob(triggerKey, trigger);
-
}
-
} catch (Exception e) {
-
throw new RuntimeException(e);
-
}
-
}
-
-
-
/**
-
* @Description:修改任务,(可以修改任务名,任务类,触发时间)
-
* 原理:移除原来的任务,添加新的任务
-
* @param oldJobName :原任务名
-
* @param jobName
-
* @param jobclass
-
* @param cron
-
* @date 2018年5月23日 上午9:13:10
-
*/
-
-
public static void modifyJob(String oldJobName, String jobName, Class jobclass, String cron) {
-
/*
-
* removeJob(oldJobName);
-
* addJob(jobName, jobclass, cron);
-
* System.err.println("修改任务"+oldJobName);
-
*/
-
TriggerKey triggerKey = TriggerKey.triggerKey(oldJobName, TRIGGER_GROUP_NAME);
-
JobKey jobKey = JobKey.jobKey(oldJobName, JOB_GROUP_NAME);
-
try {
-
Scheduler sched = gSchedulerFactory.getScheduler();
-
Trigger trigger = (Trigger) sched.getTrigger(triggerKey);
-
if (trigger == null) {
-
return;
-
}
-
sched.pauseTrigger(triggerKey);// 停止触发器
-
sched.unscheduleJob(triggerKey);// 移除触发器
-
sched.deleteJob(jobKey);// 删除任务
-
System.err.println("移除任务:" + oldJobName);
-
-
JobDetail job = JobBuilder.newJob(jobclass).withIdentity(jobName, JOB_GROUP_NAME).build();
-
// 表达式调度构建器
-
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cron);
-
// 按新的cronExpression表达式构建一个新的trigger
-
Trigger newTrigger = TriggerBuilder.newTrigger().withIdentity(jobName, TRIGGER_GROUP_NAME)
-
.withSchedule(scheduleBuilder).build();
-
-
// 交给scheduler去调度
-
sched.scheduleJob(job, newTrigger);
-
-
// 启动
-
if (!sched.isShutdown()) {
-
sched.start();
-
System.err.println("添加新任务:" + jobName);
-
}
-
System.err.println("修改任务【" + oldJobName + "】为:" + jobName);
-
} catch (Exception e) {
-
throw new RuntimeException(e);
-
}
-
-
}
-
-
-
/**
-
* @Description: 修改一个任务的触发时间
-
* @param triggerName
-
* @param triggerGroupName
-
* @param time
-
*/
-
public static void modifyJobTime(String triggerName, String triggerGroupName, String cron) {
-
TriggerKey triggerKey = TriggerKey.triggerKey(triggerName, triggerGroupName);
-
try {
-
Scheduler sched = gSchedulerFactory.getScheduler();
-
CronTrigger trigger = (CronTrigger) sched.getTrigger(triggerKey);
-
if (trigger == null) {
-
return;
-
}
-
String oldTime = trigger.getCronExpression();
-
if (!oldTime.equalsIgnoreCase(cron)) {
-
// trigger已存在,则更新相应的定时设置
-
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cron);
-
// 按新的cronExpression表达式重新构建trigger
-
trigger = trigger.getTriggerBuilder().withIdentity(triggerKey).withSchedule(scheduleBuilder).build();
-
// 按新的trigger重新设置job执行
-
sched.resumeTrigger(triggerKey);
-
}
-
} catch (Exception e) {
-
throw new RuntimeException(e);
-
}
-
}
-
-
/**
-
* @Description 移除一个任务(使用默认的任务组名,触发器名,触发器组名)
-
* @param jobName
-
*/
-
public static void removeJob(String jobName) {
-
TriggerKey triggerKey = TriggerKey.triggerKey(jobName, TRIGGER_GROUP_NAME);
-
JobKey jobKey = JobKey.jobKey(jobName, JOB_GROUP_NAME);
-
try {
-
Scheduler sched = gSchedulerFactory.getScheduler();
-
Trigger trigger = (Trigger) sched.getTrigger(triggerKey);
-
if (trigger == null) {
-
return;
-
}
-
sched.pauseTrigger(triggerKey);// 停止触发器
-
sched.unscheduleJob(triggerKey);// 移除触发器
-
sched.deleteJob(jobKey);// 删除任务
-
System.err.println("移除任务:"+jobName);
-
} catch (Exception e) {
-
throw new RuntimeException(e);
-
}
-
}
-
-
/**
-
* @Description: 移除一个任务
-
* @param jobName
-
* @param jobGroupName
-
* @param triggerName
-
* @param triggerGroupName
-
*/
-
public static void removeJob(String jobName, String jobGroupName, String triggerName, String triggerGroupName) {
-
TriggerKey triggerKey = TriggerKey.triggerKey(jobName, triggerGroupName);
-
JobKey jobKey = JobKey.jobKey(jobName, jobGroupName);
-
try {
-
Scheduler sched = gSchedulerFactory.getScheduler();
-
sched.pauseTrigger(triggerKey);// 停止触发器
-
sched.unscheduleJob(triggerKey);// 移除触发器
-
sched.deleteJob(jobKey);// 删除任务
-
} catch (Exception e) {
-
throw new RuntimeException(e);
-
}
-
}
-
-
/**
-
* @Description:暂停一个任务(使用默认组名)
-
* @param jobName
-
*/
-
public static void pauseJob(String jobName) {
-
JobKey jobKey = JobKey.jobKey(jobName, JOB_GROUP_NAME);
-
try {
-
Scheduler sched = gSchedulerFactory.getScheduler();
-
sched.pauseJob(jobKey);
-
} catch (SchedulerException e) {
-
e.printStackTrace();
-
}
-
}
-
-
/**
-
* @Description:暂停一个任务
-
* @param jobName
-
* @param jobGroupName
-
*/
-
public static void pauseJob(String jobName, String jobGroupName) {
-
JobKey jobKey = JobKey.jobKey(jobName, jobGroupName);
-
try {
-
Scheduler sched = gSchedulerFactory.getScheduler();
-
sched.pauseJob(jobKey);
-
} catch (SchedulerException e) {
-
e.printStackTrace();
-
}
-
}
-
-
/**
-
* @Description:恢复一个任务(使用默认组名)
-
* @param jobName
-
*/
-
public static void resumeJob(String jobName) {
-
JobKey jobKey = JobKey.jobKey(jobName, JOB_GROUP_NAME);
-
try {
-
Scheduler sched = gSchedulerFactory.getScheduler();
-
sched.resumeJob(jobKey);
-
} catch (SchedulerException e) {
-
e.printStackTrace();
-
}
-
}
-
-
/**
-
* @Description:恢复一个任务
-
* @param jobName
-
* @param jobGroupName
-
* @date 2018年5月17日 上午9:56:09
-
*/
-
public static void resumeJob(String jobName, String jobGroupName) {
-
JobKey jobKey = JobKey.jobKey(jobName, jobGroupName);
-
try {
-
Scheduler sched = gSchedulerFactory.getScheduler();
-
sched.resumeJob(jobKey);
-
} catch (SchedulerException e) {
-
e.printStackTrace();
-
}
-
}
-
-
/**
-
* @Description:启动所有定时任务
-
*/
-
public static void startJobs() {
-
try {
-
Scheduler sched = gSchedulerFactory.getScheduler();
-
sched.start();
-
} catch (Exception e) {
-
throw new RuntimeException(e);
-
}
-
}
-
-
/**
-
* @Description 关闭所有定时任务
-
*/
-
public static void shutdownJobs() {
-
try {
-
Scheduler sched = gSchedulerFactory.getScheduler();
-
if (!sched.isShutdown()) {
-
sched.shutdown();
-
}
-
} catch (Exception e) {
-
throw new RuntimeException(e);
-
}
-
}
-
-
/**
-
* @Description: 立即运行任务,这里的立即运行,只会运行一次,方便测试时用。
-
* @param jobName
-
* @param jobGroupName
-
* @date 2018年5月17日 上午10:03:26
-
*/
-
public static void triggerJob(String jobName) {
-
JobKey jobKey = JobKey.jobKey(jobName, JOB_GROUP_NAME);
-
try {
-
Scheduler sched = gSchedulerFactory.getScheduler();
-
sched.triggerJob(jobKey);
-
} catch (SchedulerException e) {
-
e.printStackTrace();
-
}
-
}
-
-
/**
-
* @Description: 立即运行任务,这里的立即运行,只会运行一次,方便测试时用。
-
* @param jobName
-
* @param jobGroupName
-
* @date 2018年5月17日 上午10:03:26
-
*/
-
public static void triggerJob(String jobName, String jobGroupName) {
-
JobKey jobKey = JobKey.jobKey(jobName, jobGroupName);
-
try {
-
Scheduler sched = gSchedulerFactory.getScheduler();
-
sched.triggerJob(jobKey);
-
} catch (SchedulerException e) {
-
e.printStackTrace();
-
}
-
}
-
-
/**
-
* @Description: 获取任务状态
-
* NONE: 不存在
-
* NORMAL: 正常
-
* PAUSED: 暂停
-
* COMPLETE:完成
-
* ERROR : 错误
-
* BLOCKED : 阻塞
-
* @param jobName 触发器名
-
* @date 2018年5月21日 下午2:13:45
-
*/
-
public static String getTriggerState(String jobName){
-
TriggerKey triggerKey = TriggerKey.triggerKey(jobName, TRIGGER_GROUP_NAME);
-
String name = null;
-
try {
-
Scheduler sched = gSchedulerFactory.getScheduler();
-
TriggerState triggerState = sched.getTriggerState(triggerKey);
-
name = triggerState.name();
-
} catch (SchedulerException e) {
-
e.printStackTrace();
-
}
-
return name;
-
}
-
-
/**
-
* @Description:获取最近8次执行时间
-
* @param cron
-
* @date 2018年5月24日 下午5:13:03
-
*/
-
public static List<String> getRecentTriggerTime(String cron) {
-
List<String> list = new ArrayList<String>();
-
try {
-
CronTriggerImpl cronTriggerImpl = new CronTriggerImpl();
-
cronTriggerImpl.setCronExpression(cron);
-
// 这个是重点,一行代码搞定
-
List<Date> dates = TriggerUtils.computeFireTimes(cronTriggerImpl, null, 8);
-
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-
for (Date date : dates) {
-
list.add(dateFormat.format(date));
-
}
-
-
} catch (ParseException e) {
-
e.printStackTrace();
-
}
-
return list;
-
}
-
-
}
MyJob.java 执行的任务
-
-
import java.text.SimpleDateFormat;
-
import java.util.Calendar;
-
-
import org.quartz.Job;
-
import org.quartz.JobExecutionContext;
-
import org.quartz.JobExecutionException;
-
-
/**
-
* @Description:
-
* @date 2018年5月16日
-
*/
-
public class MyJob implements Job {
-
-
-
public void execute(JobExecutionContext context) throws JobExecutionException {
-
-
System.err.println("任务运行开始-------- start --------");
-
try {
-
String jobName = context.getJobDetail().getKey().getName();
-
String jobGroup = context.getJobDetail().getKey().getGroup();
-
String triggerName = context.getTrigger().getKey().getName();
-
String triggerGroup = context.getTrigger().getKey().getGroup();
-
-
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
-
System.err.println("触发器Key:" + triggerName + ".." + triggerGroup + " 正在执行...");
-
System.err.println("任务Key:" + jobName + ".." + jobGroup + " 正在执行,执行时间: "
-
+ dateFormat.format(Calendar.getInstance().getTime()));
-
-
}catch (Exception e) {
-
System.err.println("捕获异常==="+e);
-
}
-
System.err.println("任务运行结束-------- end --------");
-
}
-
-
}
测试类 LoadTask.java
-
-
public class LoadTask {
-
-
public static void main(String[] args) {
-
System.err.println("【系统启动】");
-
String corn = "0/5 * * * * ?";
-
//QuartzManager.addJob("job1", "jobGooup", "trigger1", "triggerGroup", MyJob.class, corn);
-
QuartzManager.addJob("job1", MyJob.class, corn);
-
System.err.println("添加任务一");
-
QuartzManager.getTriggerState("jobs");
-
-
//睡眠一分钟
-
try {
-
Thread.sleep(60L * 1000L);
-
} catch (InterruptedException e) {
-
e.printStackTrace();
-
}
-
-
-
QuartzManager.modifyJobTime("job1", "0/3 * * * * ?");
-
System.out.println("修改触发时间");
-
-
try {
-
Thread.sleep(15L * 1000L);
-
} catch (InterruptedException e) {
-
e.printStackTrace();
-
}
-
-
QuartzManager.removeJob("job1");
-
//QuartzManager.removeJob("job1", "jobGooup", "trigger1", "triggerGroup");
-
System.out.println("删除任务");
-
-
try {
-
Thread.sleep(5L * 1000L);
-
} catch (InterruptedException e) {
-
e.printStackTrace();
-
}
-
-
System.out.println("【添加定时任务】");
-
QuartzManager.addJob("job1", MyJob.class, corn);
-
//QuartzManager.shutdownJobs();
-
//System.out.println("停止所有任务");
-
try {
-
Thread.sleep(5L * 1000L);
-
} catch (InterruptedException e) {
-
e.printStackTrace();
-
}
-
-
System.out.println("【暂停定时任务】");
-
QuartzManager.pauseJob("job1");
-
System.out.println("【立即运行一次】");
-
QuartzManager.triggerJob("job1");
-
try {
-
Thread.sleep(5L * 1000L);
-
} catch (InterruptedException e) {
-
e.printStackTrace();
-
}
-
-
System.out.println("【恢复定时任务】");
-
QuartzManager.resumeJob("job1");
-
try {
-
Thread.sleep(5L * 1000L);
-
} catch (InterruptedException e) {
-
e.printStackTrace();
-
}
-
-
QuartzManager.shutdownJobs();
-
}
-
}
Quartz2实现任务的临时启动/暂停/恢复
6052
在项目中需要手动启停某些服务,那么需要有一个控制这些任务的类。由于任务是有Quartz控制的,我们只需要通过Quartz的相关的API实现相关的功能即可。 Java代码 package c...来自: zmx729618
-
溪雪: 你好,请问任务状态为什么会一直处在“不存在”的状态呢?(任务名和TRIGGER_GROUP_NAME没问题)(1个月前#1楼)0
Quartz-中断正在执行的任务
阅读数 7131
概述示例示例源码概述由于业务需要,停止Quartz中正在执行的任务任务类只需要实现InterruptableJob类,然后实现interrupt()方法。在这个方法中进行标记的改变,在执行中进行这个标...博文来自: 小工匠
以代码的方式管理quartz定时任务的暂停、重启、删除、添加等
阅读数 106
【前言】在项目的管理功能中,对定时任务的管理有时会很常见。因为我们不能指望只在配置文件中配置好定时任务就行了,因为如果要控制定时任务的“暂停”呢?暂停之后又要在某个时间点“重启”该定时任务呢?或...博文来自: Try My Best 尽力而为
Quartz调度、终止执行的任务
08-07java quartz 停止正在进行的任务解决方案
阅读数 5474
新建的Job实现InterruptableJob,在Job中实现interrupt()方法。如下: publicabstractclassTestJobimplementsInterruptableJ...博文来自: 就要嗨翻天
Quartz的任务的临时启动和暂停和恢复
阅读数 1898
在项目中需要手动启停某些服务,那么需要有一个控制这些任务的类。由于任务是有Quartz控制的,我们只需要通过Quartz的相关的API实现相关的功能即可。 Java代码 package c...博文来自: Golden_lion的博客
quartz定时任务执行一段时间停止了
-问答
Spring+Quartz定时器使用方法(任务的添加删除修改暂停..._CSDN博客
11-2
Spring 内置了quartz框架,可以对方法上注解或者在配置文件里配置定时任务。但是如果...Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间) 05-25 395...
quartz 定时任务的删除 恢复 已经暂停 - taizhen/blog - CSDN博客
4-10
在动态添加定时任务中其实已经涉及到了其中的一些代码,这里我们再来细化的理一理...Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间) 05-25 阅读...
quartz 定时器的动态加载和取消定时任务
阅读数 2518
importjava.io.IOException;importjava.text.ParseException;importorg.quartz.CronTrigger;importorg.quar...博文来自: aa_moon的专栏
java系统中使用调度器Quartz实现对正在执行任务的停止
阅读数 1万+
最近在进行数据迁移的任务(就是迁移历史数据),数据量很大,需要运行几个月才能运行完。要求是每天的非工作时间定时进行迁移,正常上班的时间自动停止。自然就想到了使用Quartz来执行定时任务。每天定时的启...博文来自: ykp的专栏
quartz配置动态任务,从数据库读取相应的类及方法,执行..._CSDN博客
11-23
步骤:首先创建一个javabean---》创建Quartz工厂---》xmlSchedulerFactoryBean--...Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间) - loveLifeLove...
...Scheduler (Quartz) 动态添加,删除,修改任务的例子 ..._CSDN博客
10-30
标签:schdule quartz 定时任务 要求 根据任务清单执行不定数量,不定频率的定时任务。并且需要动态添加,删除,修改任务。 代码 public class JobExample { public ...
使用Spring Quartz做自动任务 启动和关闭
阅读数 1万+
因开发需要做一个队自动任务的开关,网上的搜索的结果都不是很满意,考虑到spring本身使用的是单例模式,所以在springMVC中开发是最适合的。/** *启动、关闭自动通过 *@authoryang...博文来自: 九天工作室
Spring3整合Quartz2实现定时任务及动态任务调整(添加删..._CSDN博客
10-26
最近工作中需要用到定时任务的功能,虽然Spring3也自带了一个轻量级的定时任务实现...Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间) 05-25 345...
SpringBoot整合Quartz之动态控制任务(暂停,启动,修改执..._CSDN博客
4-10
SpringBoot整合 Quartz 篇请移步 https://blog.csdn.net/yali_aini/article...Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间) 05-25 阅读...
quartz在job间隔期间内,保证上一个任务执行完后,再去执行下一个任务
阅读数 1万+
假设,我们有个job,每2分钟执行一次,但是job本身就要执行5分钟,这个时候,quartz默认设置是并发的,所以它又会开一个线程来执行。这样往往会导致我们执行的数据不正确。解决办法:1、要是是和sp...博文来自: 山鬼谣的专栏
Quartz之手动启动和关闭定时器简单示例
阅读数 1万+
开心一笑考路考那天,上午有个驾校带来的15个人全军覆没了,原因是有个女孩子很紧张,路考车上,监考教官看她一直发抖,心生怜悯安慰她:“小姑娘,你别怕,我又不吃人。”这女孩子转过头笑着说:“没事,我不怕,...博文来自: 阿毅
任务调度开源框架Quartz动态添加、修改和删除定时任务 ..._CSDN博客
11-18
Quartz 是个开源的作业调度框架,为在 Java 应用...Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间) - loveLifeLo...
Quartz1.7 动态添加、修改和删除定时任务(非spring集成..._CSDN博客
11-23
Quartz是一个由James House创立的开源项目,是一个功能强大的作业调度工具,可以计划...Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间) - loveLifeLo...
任务调度开源框架Quartz动态添加、修改和删除定时任务
阅读数 5万+
Quartz是个开源的作业调度框架,为在Java应用程序中进行作业调度提供了简单却强大的机制。Quartz框架包含了调度器监听、作业和触发器监听。你可以配置作业和触发器监听为全局监听或者是特定于作业和...博文来自: Joyce Luo的专栏
关于quartz暂停恢复后,job执行多次的异常情况 - u01375..._CSDN博客
11-24
我的quartzjob使用的是jdbcstore方式。我需要设置我的job可以实现故障恢复,又因为...Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间) - loveLifeLove...
spring+quartz新增,删除,暂停,恢复定时任务
阅读数 6780
spring配置 启动服务器后延迟启动定时任务-->先定义SchedulerJob javabeanpublicclassScheduleJob{ privateStringjobId;...博文来自: a3781386的博客
quartz 暂停后重新启动,在暂停时 被暂停后的任务,在启动后会补偿执行即 会连续多次调用job中的execute方法。
阅读数 9795
调度(scheduleJob)或恢复调度(resumeTrigger,resumeJob)后不同的misfire对应的处理规则CronTrigger withMisfireHandlingInstru...博文来自: rabbit0708的专栏
quartz 定时任务的删除 恢复 已经暂停
阅读数 5225
在动态添加定时任务中其实已经涉及到了其中的一些代码,这里我们再来细化的理一理。先来看一下我们初步要实现的目标效果图,这里我们只在内存中操作,并没有把quartz的任何信息保存到数据库,即使用的是RAM...博文来自: taizhen/blog
Spring+Quartz定时器使用方法(任务的添加删除修改暂停恢复)
阅读数 1063
1.前言Spring内置了quartz框架,可以对方法上注解或者在配置文件里配置定时任务。但是如果需要对这些任务进行管理(增删该查)的话不知道能不能做,反正我这渣渣是不知道的,所有我就自己整合了Qua...博文来自: keisunique
Spring Quartz 动态暂停、恢复、修改定时任务
01-06Spring3整合Quartz2实现定时任务及动态任务调整(添加删除暂停恢复)--推荐
阅读数 3946
1、常规整合http://www.dexcoder.com/selfly/article/308最近工作中需要用到定时任务的功能,虽然Spring3也自带了一个轻量级的定时任务实现,但感觉不够灵活,功...博文来自: 零度的博客专栏
Spring+Quartz 实现任务动态管理监控
阅读数 3130
Spring+Quartz实现任务动态管理监控环境:Quartz2.2.3+Spring4.0配置文件很简单,只需要一个配置就可以了,注入一个FactoryBean.&lt;!--任务工厂,注...博文来自: 听半的曲的博客
Quartz——有状态的job和无状态的job
阅读数 9373
如果使用了Quartz,当然在一个系统中绝不仅仅是一个job那么简单,如果同一个job同一时刻运行,可能会造成重复入库的情况。所以我们希望多线程时,能够控制同一时刻相同job只能有一个正在执行。 ...博文来自: 许小乖……是总攻
Quartz+Spring 实现任务监控
阅读数 9477
Quartz是一个优秀的任务调度框架,完全基于Java实现,功能强大,易于集成,最近在写了一个小项目,算是对之前接触到的技术做一个总结吧,在这个项目中使用Quartz实现对任务的监控...博文来自: 想成为工程师的码农
作业调度框架 Quartz 学习笔记(四) -- 接收参数和维护状态
阅读数 2万+
>如果你想在某个job执行的时候传入参数,参数在job执行过程中对参数有所修改,并且在job执行完毕后把参数返回那么你需要学习一下现在的这个例子了,因为它正是你所想要的...... 我的建议是先把代码...博文来自: 无他, 但手熟尔
Quartz 2.2 的实现原理和运行过程固定时间后删除任务
阅读数 2127
Quartz2.2的实现原理和运行过程一、Quartz的几个概念类这几个概念类,是我们调用Quartz任务调度的基础。了解清楚之后,我们再来看一下如何去启动和关闭一个Quartz调度程序。1、org....博文来自: u010357298的博客
quartz不正常执行.执行一段时间后无故停止
阅读数 470
1、看看线程池数量配置的够不够,如果不够,在某些任务执行时间超过预期,可能会造成其他任务排队。2、升级到最新的GA版本,老版本确实是有问题。 可能是资源耗尽,比如数据库连接、线程池线程等,导致最后一...博文来自: fengbin2005
quartz定时:修改时间及时生效的定时任务
阅读数 1350
Quartz1.x的用法如下,下方有2.x的大致用法,使用quartz定时任务在服务重启后会失效,如果想要任务不消失的定时任务,参照我的另一篇博客:spring定时:动态设置定时任务 。maven配置...博文来自: qq_39071530的博客
在spring中实现quartz的动态调度(开始、暂停、停止等)
阅读数 1517
版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/fantasic_van/article/details/74942062需求:需要在页面设定某个时间,...博文来自: xiang__liu的博客
在spring中实现quartz2.2.1的动态调度(开始、暂停、停止等)
阅读数 4463
需求:需要在页面设定某个时间,然后点击按钮后,执行某个调度,并且可以在页面删除某个调度1、导包org.quartz-schedulerquartz2.2.1...博文来自: fantasic_van的博客
quartz暂停及恢复任务解决恢复时一咕噜把未执行的全补回来的问题
阅读数 83
网上文章都说了pauseTriggerresumeTrigger神马的暂停恢复任务但是这样设了之后,在恢复的时候会把暂停期间没执行的任务又TM给补上了,很多人便说了,这TM不是我想要的啊!你想要的是神...博文来自: jdkleo的专栏
Quartz 2.2 动态添加、修改和删除定时任务
阅读数 3万+
Quartz2.2的实现原理和运行过程,请阅读我的另一篇文章:http://blog.csdn.net/xlxxcc/article/details/52104463下面直接上代码:QuartzMan...博文来自: xlxxcc的专栏
Cron+Trigger+Quartz 任务 启动 暂停 恢复 修改 实例
阅读数 554
packagecom.xxl.job.admin.core.schedule;importcom.xxl.job.admin.core.jobbean.RemoteHttpJobBean;import...博文来自: z69183787的专栏
使用quartz实现任务动态设置,从数据库获取配置时间
阅读数 1148
Spring+quartz2.2.3 xml配置xml文件 &lt;?xmlversion="1.0"encoding="GBK"?&gt;&...博文来自: xcc_2269861428的博客
Quartz.net 动态调整任务的调度时间
阅读数 410
执行作业可以有很多种法子,1.MSSqlServer提供了作业,可以自己创建作业来运行。2.Windows系统的计划任务。3.Timer计时器。4.Quartz.NET 但是这些基本都是提...博文来自: 星辉Johnson的博客
quartz当机器挂掉重启后定时任务后执行的策略
阅读数 8516
quartz,java世界里面的任务管理容器。至于为什么会有misfire这个概念,我想可以重这三个方面来进行说明:1所有的线程都在忙于更高优先级的任务2任务本身CRASH了3代码的BUG,导置错误的...博文来自: 啊大海全是水的博客
quartz的Scheduler 动态增加、修改、删除定时任务的方法
阅读数 122
变态的PM需求。虽然看上去很简单。但网上资源其实不多,走了不少弯路。分享一下。 quartz的Scheduler的主要代码 publicvoidaddSchduleJob(Taskentity)thr...博文来自: 无事忙
Quartz+Spring Boot实现动态管理定时任务
阅读数 7232
在实践中遇到动态管理定时任务的需求,场景通常是动态添加、更新、删除任务,借助Quartz,可方便实现功能。以下使用Quartz结合SpringBoot方式使用。POM依赖&amp;lt;par...博文来自: wang704987562的博客
spring-boot+quartz的CRUD动态任务管理系统
阅读数 1247
spring-boot-quartz基于spring-boot+quartz的CRUD动态任务管理系统,适用于中小项目。开发环境JDK1.7、Maven、Eclipse技术栈SpringBoot1.5...博文来自: 小柒2012的专栏
避免 Hibernate 中用get/load方法获取的实体调用set方法后自动更新
阅读数 1万+
1、问题症状描述 最近在处理一个新需求问题,代码的大致逻辑是获取一个实体对象,调用该对象的set方法设置其中的某些字段,然后把修改后的实体作为参数供其他地方调用,根据返回值来决定是否更新这...博文来自: Mr_Alex
【深度剖析HMM(附Python代码)】1.前言及隐马尔科夫链HMM的背景
阅读数 1万+
1. 前言 隐马尔科夫HMM模型是一类重要的机器学习方法,其主要用于序列数据的分析,广泛应用于语音识别、文本翻译、序列预测、中文分词等多个领域。虽然近年来,由于RNN等深度学习方法的发展,HMM模型...博文来自: tostq的专栏
C语言实现图的最短路径Floyd算法
阅读数 716
Floyd算法直接使用二维数组求出所有顶点到所有顶点的最短路径。 D代表顶点到顶点的最短路径权值和的矩阵。 P代表对应顶点的最小路径的前驱矩阵。 以下程序在DEV C++中调试运行通过。 #inclu...博文来自: KittyGirl
ThreadLocal的设计理念与作用
阅读数 6万+
Java中的ThreadLocal类允许我们创建只能被同一个线程读写的变量。因此,如果一段代码含有一个ThreadLocal变量的引用,即使两个线程同时执行这段代码,它们也无法访问到对方的Thread...博文来自: u011860731的专栏
【HTTP】Fiddler(一) - Fiddler简介
阅读数 30万+
1.为什么是Fiddler? 抓包工具有很多,小到最常用的web调试工具firebug,达到通用的强大的抓包工具wireshark.为什么使用fiddler?原因如下: a.Firebug虽然可以抓包...博文来自: 专注、专心
python图片处理类之~PIL.Image模块(ios android icon图标自动生成处理)
阅读数 6万+
1.从pyCharm提示下载PIL包 http://www.pythonware.com/products/pil/ 2.解压后,进入到目录下 cd /Users/jianan/Dow...博文来自: 专注于cocos+unity+服务器全栈
Qt的Signal和Slot机制(二)
阅读数 1万+
第二节 Signal和Slot的粘合剂 如果要连接一个Signal和Slot我们会用connect函数,下面我们就看一下connect是如何把Signal和Slot粘合在一起的。 以下是conn...博文来自: SuperFPE的专栏
WSAEventSelect模型编程 详解
阅读数 9328
WSAEventSelect模型编程 WSAEventSelect模型编程 这个模型是一个简单的异步事件模型,使用起来比较方便,现在说一下其的具体的用法和需要注意的地方。...博文来自: wangjieest的专栏
编写基于Qt的GLSL程序需要注意的几点
阅读数 5543
最近尝试着编写基于Qt和GLSL的小例子,遇到了一些小问题,在这里给大家分享一下,希望大家不要重蹈覆辙。...博文来自: 开发游戏,辉煌全中国
高斯混合模型(GMM)及其EM算法的理解
阅读数 10万+
一个例子高斯混合模型(Gaussian Mixed Model)指的是多个高斯分布函数的线性组合,理论上GMM可以拟合出任意类型的分布,通常用于解决同一集合下的数据包含多个不同的分布的情况(或者是同一...博文来自: 小平子的专栏
linux上安装Docker(非常简单的安装方法)
阅读数 20万+
最近比较有空,大四出来实习几个月了,作为实习狗的我,被叫去研究Docker了,汗汗! Docker的三大核心概念:镜像、容器、仓库 镜像:类似虚拟机的镜像、用俗话说就是安装文件。 容器:类似一个轻量...博文来自: 我走小路的博客
fragment清除页面数据(重新加载布局)
阅读数 1万+
上一篇博客介绍了如何解决Fragment重叠的问题,有需要的同学可以看一下,底部有demo下载。 直通车:完美解决Fragment重叠本篇博客我们来说一下怎么让fragment重新加载布局资源文件。...博文来自: 喻志强的博客
IDEA 中 如何通过数据库表生成带注解的实体类
阅读数 1621
Springboot搭建后台项目中,对DB的操作一般会用到JPA,怎么将数据库中的表生成对应的实体类呢?下面的教程记录了详细的操作步骤:转载记录下来, http://blog.csdn....博文来自: wusd1256的专栏
强连通分量及缩点tarjan算法解析
阅读数 57万+
强连通分量: 简言之 就是找环(每条边只走一次,两两可达) 孤立的一个点也是一个连通分量 使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点) 定义: int Ti...博文来自: 九野的博客
jquery/js实现一个网页同时调用多个倒计时(最新的)
阅读数 44万+
jquery/js实现一个网页同时调用多个倒计时(最新的) 最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦! //js ...博文来自: Websites
三菱FX系列PLC与PC通讯的实现之专有协议(计算机联接)的程序设计之一
阅读数 1万+
阅读内容为:FX系列微型可编程控制器用户手册(通讯篇)中计算机链接功能章节。 采用本方法通信,pc端的实现,其实就是,把操作按照协议(2种)翻译成相应的字符串,通过串口发送给plc。 编写一应用程...博文来自: pengjc2001的博客
关于SpringBoot bean无法注入的问题(与文件包位置有关)
阅读数 17万+
问题场景描述整个项目通过Maven构建,大致结构如下: 核心Spring框架一个module spring-boot-base service和dao一个module server-core 提供系统...博文来自: 开发随笔
Qt5.9编译MQTT错误解决办法
阅读数 2710
本文主要总结Qt5.9在编译MQTT3.1时,遇到的问题和对应的解决办法。 一、我用上述的编译环境构建时,出现了如下错误: D:\1Project\Qt5project\qmqtt-master\sr...博文来自: 净无邪博客
vs2015一键卸载所有组件工具,彻底卸载干净。
阅读数 12万+
1.手动卸载VS主体 2.下载工具并解压 下载地址:https://pan.baidu.com/s/1eSHRYxW 3.管理员运行,并输入Y(yes),等待卸载完成。...博文来自: a359877454的博客
归档
热门文章
- sql查询数据库时间最新的一条记录
阅读数 6539
- 前端js拼接Json串
阅读数 4139
- Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间)
阅读数 2187
- 根据Quartz-Cron表达式获取最近几次执行时间
阅读数 1751
- 递归获取菜单树返回json
阅读数 1000
最新评论
- Quartz动态添加,修改,删除任...
qq_42617840:你好,请问任务状态为什么会一直处在“不存在”的状态呢?(任务名和TRIGGER_GROUP_NAME没问题)
- sql查询数据库时间最新的一条记录
qq_25073223:mssql sqlserver 建议使用这个 “https://www.cnblogs.com/lairui1232000/articles/10388437.html” [code=sql]SELECT * from tablename where 时间=(select max(时间) from tablename) ---这一个代码,可能会出现两条记录哦! [/code]
- Oracle查询表里重复数据
liuzhixiong_521:作者深度好文,深受感慨!