Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间)

时间:2023-03-08 17:00:10
Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间)
Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间)
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动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间)

2018年05月25日 11:16:07 loveLifeLoveCoding 阅读数:2192

本案例采用quartz-2.2.3.jar

入门案例,执行比较简单的任务

QuartzManager.java  (任务的管理)

  1. import java.text.ParseException;
  2. import java.text.SimpleDateFormat;
  3. import java.util.ArrayList;
  4. import java.util.Date;
  5. import java.util.List;
  6. import org.quartz.CronScheduleBuilder;
  7. import org.quartz.CronTrigger;
  8. import org.quartz.JobBuilder;
  9. import org.quartz.JobDetail;
  10. import org.quartz.JobKey;
  11. import org.quartz.Scheduler;
  12. import org.quartz.SchedulerException;
  13. import org.quartz.SchedulerFactory;
  14. import org.quartz.Trigger;
  15. import org.quartz.Trigger.TriggerState;
  16. import org.quartz.TriggerBuilder;
  17. import org.quartz.TriggerKey;
  18. import org.quartz.TriggerUtils;
  19. import org.quartz.impl.StdSchedulerFactory;
  20. import org.quartz.impl.triggers.CronTriggerImpl;
  21. public class QuartzManager {
  22. private static SchedulerFactory gSchedulerFactory = new StdSchedulerFactory();
  23. private static String JOB_GROUP_NAME = "MY_JOBGROUP_NAME";
  24. private static String TRIGGER_GROUP_NAME = "MY_TRIGGERGROUP_NAME";
  25. /**
  26. * @Description: 添加一个定时任务,使用默认的任务组名,触发器名,触发器组名
  27. * @param jobName
  28. * 任务名
  29. * @param cls
  30. * 任务
  31. * @param time
  32. * 时间设置,参考quartz说明文档
  33. */
  34. @SuppressWarnings({ "rawtypes", "unchecked" })
  35. public static void addJob(String jobName, Class cls, String cron) {
  36. try {
  37. Scheduler sched = gSchedulerFactory.getScheduler();
  38. JobDetail job = JobBuilder.newJob(cls).withIdentity(jobName, JOB_GROUP_NAME).build();
  39. // 表达式调度构建器
  40. CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cron);
  41. // 按新的cronExpression表达式构建一个新的trigger
  42. Trigger trigger = TriggerBuilder.newTrigger().withIdentity(jobName, TRIGGER_GROUP_NAME)
  43. .withSchedule(scheduleBuilder).build();
  44. // 交给scheduler去调度
  45. sched.scheduleJob(job, trigger);
  46. // 启动
  47. if (!sched.isShutdown()) {
  48. sched.start();
  49. System.err.println("添加任务:"+jobName);
  50. }
  51. } catch (Exception e) {
  52. throw new RuntimeException(e);
  53. }
  54. }
  55. /**
  56. * @Description: 添加一个定时任务
  57. * @param jobName
  58. * 任务名
  59. * @param jobGroupName
  60. * 任务组名
  61. * @param triggerName
  62. * 触发器名
  63. * @param triggerGroupName
  64. * 触发器组名
  65. * @param jobClass
  66. * 任务
  67. * @param time
  68. * 时间设置,参考quartz说明文档
  69. */
  70. @SuppressWarnings({ "rawtypes", "unchecked" })
  71. public static void addJob(String jobName, String jobGroupName, String triggerName, String triggerGroupName,
  72. Class jobClass, String cron) {
  73. try {
  74. Scheduler sched = gSchedulerFactory.getScheduler();
  75. JobDetail job = JobBuilder.newJob(jobClass).withIdentity(jobName, jobGroupName).build();
  76. // 表达式调度构建器
  77. CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cron);
  78. // 按新的cronExpression表达式构建一个新的trigger
  79. Trigger trigger = TriggerBuilder.newTrigger().withIdentity(triggerName, triggerGroupName)
  80. .withSchedule(scheduleBuilder).build();
  81. sched.scheduleJob(job, trigger);
  82. // 启动
  83. if (!sched.isShutdown()) {
  84. sched.start();
  85. }
  86. } catch (Exception e) {
  87. throw new RuntimeException(e);
  88. }
  89. }
  90. /**
  91. * @Description: 修改一个任务的触发时间(使用默认的任务组名,触发器名,触发器组名)
  92. * @param jobName
  93. * @param time
  94. */
  95. public static void modifyJobTime(String jobName, String cron) {
  96. TriggerKey triggerKey = TriggerKey.triggerKey(jobName, TRIGGER_GROUP_NAME);
  97. try {
  98. Scheduler sched = gSchedulerFactory.getScheduler();
  99. CronTrigger trigger = (CronTrigger) sched.getTrigger(triggerKey);
  100. if (trigger == null) {
  101. return;
  102. }
  103. String oldTime = trigger.getCronExpression();
  104. if (!oldTime.equalsIgnoreCase(cron)) {
  105. CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cron);
  106. // 按新的cronExpression表达式重新构建trigger
  107. trigger = trigger.getTriggerBuilder().withIdentity(triggerKey).withSchedule(scheduleBuilder).build();
  108. // 按新的trigger重新设置job执行
  109. sched.rescheduleJob(triggerKey, trigger);
  110. }
  111. } catch (Exception e) {
  112. throw new RuntimeException(e);
  113. }
  114. }
  115. /**
  116. * @Description:修改任务,(可以修改任务名,任务类,触发时间)
  117. * 原理:移除原来的任务,添加新的任务
  118. * @param oldJobName :原任务名
  119. * @param jobName
  120. * @param jobclass
  121. * @param cron
  122. * @date 2018年5月23日 上午9:13:10
  123. */
  124. @SuppressWarnings({ "rawtypes", "unchecked" })
  125. public static void modifyJob(String oldJobName, String jobName, Class jobclass, String cron) {
  126. /*
  127. * removeJob(oldJobName);
  128. * addJob(jobName, jobclass, cron);
  129. * System.err.println("修改任务"+oldJobName);
  130. */
  131. TriggerKey triggerKey = TriggerKey.triggerKey(oldJobName, TRIGGER_GROUP_NAME);
  132. JobKey jobKey = JobKey.jobKey(oldJobName, JOB_GROUP_NAME);
  133. try {
  134. Scheduler sched = gSchedulerFactory.getScheduler();
  135. Trigger trigger = (Trigger) sched.getTrigger(triggerKey);
  136. if (trigger == null) {
  137. return;
  138. }
  139. sched.pauseTrigger(triggerKey);// 停止触发器
  140. sched.unscheduleJob(triggerKey);// 移除触发器
  141. sched.deleteJob(jobKey);// 删除任务
  142. System.err.println("移除任务:" + oldJobName);
  143. JobDetail job = JobBuilder.newJob(jobclass).withIdentity(jobName, JOB_GROUP_NAME).build();
  144. // 表达式调度构建器
  145. CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cron);
  146. // 按新的cronExpression表达式构建一个新的trigger
  147. Trigger newTrigger = TriggerBuilder.newTrigger().withIdentity(jobName, TRIGGER_GROUP_NAME)
  148. .withSchedule(scheduleBuilder).build();
  149. // 交给scheduler去调度
  150. sched.scheduleJob(job, newTrigger);
  151. // 启动
  152. if (!sched.isShutdown()) {
  153. sched.start();
  154. System.err.println("添加新任务:" + jobName);
  155. }
  156. System.err.println("修改任务【" + oldJobName + "】为:" + jobName);
  157. } catch (Exception e) {
  158. throw new RuntimeException(e);
  159. }
  160. }
  161. /**
  162. * @Description: 修改一个任务的触发时间
  163. * @param triggerName
  164. * @param triggerGroupName
  165. * @param time
  166. */
  167. public static void modifyJobTime(String triggerName, String triggerGroupName, String cron) {
  168. TriggerKey triggerKey = TriggerKey.triggerKey(triggerName, triggerGroupName);
  169. try {
  170. Scheduler sched = gSchedulerFactory.getScheduler();
  171. CronTrigger trigger = (CronTrigger) sched.getTrigger(triggerKey);
  172. if (trigger == null) {
  173. return;
  174. }
  175. String oldTime = trigger.getCronExpression();
  176. if (!oldTime.equalsIgnoreCase(cron)) {
  177. // trigger已存在,则更新相应的定时设置
  178. CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cron);
  179. // 按新的cronExpression表达式重新构建trigger
  180. trigger = trigger.getTriggerBuilder().withIdentity(triggerKey).withSchedule(scheduleBuilder).build();
  181. // 按新的trigger重新设置job执行
  182. sched.resumeTrigger(triggerKey);
  183. }
  184. } catch (Exception e) {
  185. throw new RuntimeException(e);
  186. }
  187. }
  188. /**
  189. * @Description 移除一个任务(使用默认的任务组名,触发器名,触发器组名)
  190. * @param jobName
  191. */
  192. public static void removeJob(String jobName) {
  193. TriggerKey triggerKey = TriggerKey.triggerKey(jobName, TRIGGER_GROUP_NAME);
  194. JobKey jobKey = JobKey.jobKey(jobName, JOB_GROUP_NAME);
  195. try {
  196. Scheduler sched = gSchedulerFactory.getScheduler();
  197. Trigger trigger = (Trigger) sched.getTrigger(triggerKey);
  198. if (trigger == null) {
  199. return;
  200. }
  201. sched.pauseTrigger(triggerKey);// 停止触发器
  202. sched.unscheduleJob(triggerKey);// 移除触发器
  203. sched.deleteJob(jobKey);// 删除任务
  204. System.err.println("移除任务:"+jobName);
  205. } catch (Exception e) {
  206. throw new RuntimeException(e);
  207. }
  208. }
  209. /**
  210. * @Description: 移除一个任务
  211. * @param jobName
  212. * @param jobGroupName
  213. * @param triggerName
  214. * @param triggerGroupName
  215. */
  216. public static void removeJob(String jobName, String jobGroupName, String triggerName, String triggerGroupName) {
  217. TriggerKey triggerKey = TriggerKey.triggerKey(jobName, triggerGroupName);
  218. JobKey jobKey = JobKey.jobKey(jobName, jobGroupName);
  219. try {
  220. Scheduler sched = gSchedulerFactory.getScheduler();
  221. sched.pauseTrigger(triggerKey);// 停止触发器
  222. sched.unscheduleJob(triggerKey);// 移除触发器
  223. sched.deleteJob(jobKey);// 删除任务
  224. } catch (Exception e) {
  225. throw new RuntimeException(e);
  226. }
  227. }
  228. /**
  229. * @Description:暂停一个任务(使用默认组名)
  230. * @param jobName
  231. */
  232. public static void pauseJob(String jobName) {
  233. JobKey jobKey = JobKey.jobKey(jobName, JOB_GROUP_NAME);
  234. try {
  235. Scheduler sched = gSchedulerFactory.getScheduler();
  236. sched.pauseJob(jobKey);
  237. } catch (SchedulerException e) {
  238. e.printStackTrace();
  239. }
  240. }
  241. /**
  242. * @Description:暂停一个任务
  243. * @param jobName
  244. * @param jobGroupName
  245. */
  246. public static void pauseJob(String jobName, String jobGroupName) {
  247. JobKey jobKey = JobKey.jobKey(jobName, jobGroupName);
  248. try {
  249. Scheduler sched = gSchedulerFactory.getScheduler();
  250. sched.pauseJob(jobKey);
  251. } catch (SchedulerException e) {
  252. e.printStackTrace();
  253. }
  254. }
  255. /**
  256. * @Description:恢复一个任务(使用默认组名)
  257. * @param jobName
  258. */
  259. public static void resumeJob(String jobName) {
  260. JobKey jobKey = JobKey.jobKey(jobName, JOB_GROUP_NAME);
  261. try {
  262. Scheduler sched = gSchedulerFactory.getScheduler();
  263. sched.resumeJob(jobKey);
  264. } catch (SchedulerException e) {
  265. e.printStackTrace();
  266. }
  267. }
  268. /**
  269. * @Description:恢复一个任务
  270. * @param jobName
  271. * @param jobGroupName
  272. * @date 2018年5月17日 上午9:56:09
  273. */
  274. public static void resumeJob(String jobName, String jobGroupName) {
  275. JobKey jobKey = JobKey.jobKey(jobName, jobGroupName);
  276. try {
  277. Scheduler sched = gSchedulerFactory.getScheduler();
  278. sched.resumeJob(jobKey);
  279. } catch (SchedulerException e) {
  280. e.printStackTrace();
  281. }
  282. }
  283. /**
  284. * @Description:启动所有定时任务
  285. */
  286. public static void startJobs() {
  287. try {
  288. Scheduler sched = gSchedulerFactory.getScheduler();
  289. sched.start();
  290. } catch (Exception e) {
  291. throw new RuntimeException(e);
  292. }
  293. }
  294. /**
  295. * @Description 关闭所有定时任务
  296. */
  297. public static void shutdownJobs() {
  298. try {
  299. Scheduler sched = gSchedulerFactory.getScheduler();
  300. if (!sched.isShutdown()) {
  301. sched.shutdown();
  302. }
  303.      } catch (Exception e) {
  304. throw new RuntimeException(e);
  305. }
  306. }
  307. /**
  308. * @Description: 立即运行任务,这里的立即运行,只会运行一次,方便测试时用。
  309. * @param jobName
  310. * @param jobGroupName
  311. * @date 2018年5月17日 上午10:03:26
  312. */
  313. public static void triggerJob(String jobName) {
  314. JobKey jobKey = JobKey.jobKey(jobName, JOB_GROUP_NAME);
  315. try {
  316. Scheduler sched = gSchedulerFactory.getScheduler();
  317. sched.triggerJob(jobKey);
  318. } catch (SchedulerException e) {
  319. e.printStackTrace();
  320. }
  321. }
  322. /**
  323. * @Description: 立即运行任务,这里的立即运行,只会运行一次,方便测试时用。
  324. * @param jobName
  325. * @param jobGroupName
  326. * @date 2018年5月17日 上午10:03:26
  327. */
  328. public static void triggerJob(String jobName, String jobGroupName) {
  329. JobKey jobKey = JobKey.jobKey(jobName, jobGroupName);
  330. try {
  331. Scheduler sched = gSchedulerFactory.getScheduler();
  332. sched.triggerJob(jobKey);
  333. } catch (SchedulerException e) {
  334. e.printStackTrace();
  335. }
  336. }
  337. /**
  338. * @Description: 获取任务状态
  339. * NONE: 不存在
  340. * NORMAL: 正常
  341. * PAUSED: 暂停
  342. * COMPLETE:完成
  343. * ERROR : 错误
  344. * BLOCKED : 阻塞
  345. * @param jobName 触发器名
  346. * @date 2018年5月21日 下午2:13:45
  347. */
  348. public static String getTriggerState(String jobName){
  349. TriggerKey triggerKey = TriggerKey.triggerKey(jobName, TRIGGER_GROUP_NAME);
  350. String name = null;
  351. try {
  352. Scheduler sched = gSchedulerFactory.getScheduler();
  353. TriggerState triggerState = sched.getTriggerState(triggerKey);
  354. name = triggerState.name();
  355. } catch (SchedulerException e) {
  356. e.printStackTrace();
  357. }
  358. return name;
  359. }
  360. /**
  361. * @Description:获取最近8次执行时间
  362. * @param cron
  363. * @date 2018年5月24日 下午5:13:03
  364. */
  365. public static List<String> getRecentTriggerTime(String cron) {
  366. List<String> list = new ArrayList<String>();
  367. try {
  368. CronTriggerImpl cronTriggerImpl = new CronTriggerImpl();
  369. cronTriggerImpl.setCronExpression(cron);
  370. // 这个是重点,一行代码搞定
  371. List<Date> dates = TriggerUtils.computeFireTimes(cronTriggerImpl, null, 8);
  372. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  373. for (Date date : dates) {
  374. list.add(dateFormat.format(date));
  375. }
  376. } catch (ParseException e) {
  377. e.printStackTrace();
  378. }
  379. return list;
  380. }
  381. }

MyJob.java  执行的任务

  1. import java.text.SimpleDateFormat;
  2. import java.util.Calendar;
  3. import org.quartz.Job;
  4. import org.quartz.JobExecutionContext;
  5. import org.quartz.JobExecutionException;
  6. /**
  7. * @Description:
  8. * @date 2018年5月16日
  9. */
  10. public class MyJob implements Job {
  11. @Override
  12. public void execute(JobExecutionContext context) throws JobExecutionException {
  13. System.err.println("任务运行开始-------- start --------");
  14. try {
  15. String jobName = context.getJobDetail().getKey().getName();
  16. String jobGroup = context.getJobDetail().getKey().getGroup();
  17. String triggerName = context.getTrigger().getKey().getName();
  18. String triggerGroup = context.getTrigger().getKey().getGroup();
  19. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
  20. System.err.println("触发器Key:" + triggerName + ".." + triggerGroup + " 正在执行...");
  21. System.err.println("任务Key:" + jobName + ".." + jobGroup + " 正在执行,执行时间: "
  22. + dateFormat.format(Calendar.getInstance().getTime()));
  23. }catch (Exception e) {
  24. System.err.println("捕获异常==="+e);
  25. }
  26. System.err.println("任务运行结束-------- end --------");
  27. }
  28. }

测试类 LoadTask.java

  1. public class LoadTask {
  2. public static void main(String[] args) {
  3. System.err.println("【系统启动】");
  4. String corn = "0/5 * * * * ?";
  5. //QuartzManager.addJob("job1", "jobGooup", "trigger1", "triggerGroup", MyJob.class, corn);
  6. QuartzManager.addJob("job1", MyJob.class, corn);
  7. System.err.println("添加任务一");
  8. QuartzManager.getTriggerState("jobs");
  9. //睡眠一分钟
  10. try {
  11. Thread.sleep(60L * 1000L);
  12. } catch (InterruptedException e) {
  13. e.printStackTrace();
  14. }
  15. QuartzManager.modifyJobTime("job1", "0/3 * * * * ?");
  16. System.out.println("修改触发时间");
  17. try {
  18. Thread.sleep(15L * 1000L);
  19. } catch (InterruptedException e) {
  20. e.printStackTrace();
  21. }
  22. QuartzManager.removeJob("job1");
  23. //QuartzManager.removeJob("job1", "jobGooup", "trigger1", "triggerGroup");
  24. System.out.println("删除任务");
  25. try {
  26. Thread.sleep(5L * 1000L);
  27. } catch (InterruptedException e) {
  28. e.printStackTrace();
  29. }
  30. System.out.println("【添加定时任务】");
  31. QuartzManager.addJob("job1", MyJob.class, corn);
  32. //QuartzManager.shutdownJobs();
  33. //System.out.println("停止所有任务");
  34. try {
  35. Thread.sleep(5L * 1000L);
  36. } catch (InterruptedException e) {
  37. e.printStackTrace();
  38. }
  39. System.out.println("【暂停定时任务】");
  40. QuartzManager.pauseJob("job1");
  41. System.out.println("【立即运行一次】");
  42. QuartzManager.triggerJob("job1");
  43. try {
  44. Thread.sleep(5L * 1000L);
  45. } catch (InterruptedException e) {
  46. e.printStackTrace();
  47. }
  48. System.out.println("【恢复定时任务】");
  49. QuartzManager.resumeJob("job1");
  50. try {
  51. Thread.sleep(5L * 1000L);
  52. } catch (InterruptedException e) {
  53. e.printStackTrace();
  54. }
  55. QuartzManager.shutdownJobs();
  56. }
  57. }
Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间)
  • Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间)
    溪雪: 你好,请问任务状态为什么会一直处在“不存在”的状态呢?(任务名和TRIGGER_GROUP_NAME没问题)(1个月前#1楼)

Quartz调度、终止执行的任务

08-07

使用Quartz调度任务,根据需要人为的终止某个任务,适用于很多常见的场景

下载

quartz定时任务执行一段时间停止了

09-01

-问答

原来除皮肤瘙痒这么简单?只有1%人知道的方法谷丰健康 · 猎媒

Spring+Quartz定时器使用方法(任务的添加删除修改暂停..._CSDN博客

11-2

Spring 内置了quartz框架,可以对方法上注解或者在配置文件里配置定时任务。但是如果...Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间) 05-25 395...

quartz 定时任务的删除 恢复 已经暂停 - taizhen/blog - CSDN博客

4-10

在动态添加定时任务中其实已经涉及到了其中的一些代码,这里我们再来细化的理一理...Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间) 05-25 阅读...

quartz配置动态任务,从数据库读取相应的类及方法,执行..._CSDN博客

11-23

步骤:首先创建一个javabean---》创建Quartz工厂---》xmlSchedulerFactoryBean--...Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间) - loveLifeLove...

...Scheduler (Quartz) 动态添加,删除,修改任务的例子 ..._CSDN博客

10-30

标签:schdule quartz 定时任务 要求 根据任务清单执行不定数量,不定频率的定时任务。并且需要动态添加,删除,修改任务。 代码 public class JobExample { public ...

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动态添加、修改和删除定时任务 ..._CSDN博客

11-18

Quartz 是个开源的作业调度框架,为在 Java 应用...Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间) - loveLifeLo...

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

11-23

Quartz是一个由James House创立的开源项目,是一个功能强大的作业调度工具,可以计划...Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间) - loveLifeLo...

晚上白开水+它,胖到160斤都能瘦,后悔没早知道道群 · 猎媒

关于quartz暂停恢复后,job执行多次的异常情况 - u01375..._CSDN博客

11-24

我的quartzjob使用的是jdbcstore方式。我需要设置我的job可以实现故障恢复,又因为...Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间) - loveLifeLove...

quartz 暂停后重新启动,在暂停时 被暂停后的任务,在启动后会补偿执行即 会连续多次调用job中的execute方法。

阅读数 9795

调度(scheduleJob)或恢复调度(resumeTrigger,resumeJob)后不同的misfire对应的处理规则CronTrigger withMisfireHandlingInstru...博文来自: rabbit0708的专栏

白开水+它,喝完排出 巨便 !大肚子没了裕华 · 猎媒

Quartz的简化(只要一张表,动态启停任务)

阅读数 2763

spring-quartz,一张表配置、动态启停Job博文来自: 蒲公英的约定

Spring Quartz 动态暂停、恢复、修改定时任务

01-06

Spring Quartz 动态暂停、恢复、修改定时任务的一个demo,使用maven构建,框架采用spring springmvc jpa,数据库mysql,含数据库脚本,运行可用,页面访问地址ht

下载

肚子胖的像怀孕?白开水+它,1天瘦2斤!想胖都难宁龙商贸 · 猎媒

Quartz动态添加、修改和删除定时任务时间的方法以及日期转换cron表达式时间格式工具类

阅读数 9435

QuartzCronDateUtils博文来自: dengyu的专栏

码农必看:各大平台的推荐系统原来是靠它完成的,太牛了

第四范式先荐帮助客户从0到1搭建推荐系统,显著提升用户活跃,留存,观看时长等重要业务指标

Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间)

Cron+Trigger+Quartz 任务 启动 暂停 恢复 修改 实例

阅读数 554

packagecom.xxl.job.admin.core.schedule;importcom.xxl.job.admin.core.jobbean.RemoteHttpJobBean;import...博文来自: z69183787的专栏

如何快速提升个性化推荐效果?

先荐推荐系统适合首页,信息流,内容详情页等场景,支持网页, APP,小程序,快应用,1分钟安装5分钟上线,支持人工干预推荐

Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间)

第四范式发布先荐推荐系统,帮助300+媒体平台实现内容升级

先荐推荐系统由国际顶尖智能推荐团队研发,三步即可完成接入,毫秒级数据更新,支持PC,WAP, APP全平台接入

Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间)

人脸检测工具face_recognition的安装与应用

阅读数 5万+

人脸检测工具face_recognition的安装与应用博文来自: roguesir的博客

原创
38
粉丝
4
喜欢
8
评论
3
等级:

访问:

2万+
积分:

581
排名:

11万+
勋章:

最新评论