1. package cn.com.do1.component.common.util;
  2. import org.quartz.*;
  3. import org.quartz.impl.StdSchedulerFactory;
  4. import java.text.ParseException;
  5. /**
  6. * Created by ao.ouyang on 2015/8/3.
  7. * 任务调度管理
  8. */
  9. public class SchedulerManager {
  10. private static SchedulerFactory sf = new StdSchedulerFactory();
  11. private static String JOB_GROUP_NAME = "group1";
  12. private static String TRIGGER_GROUP_NAME = "trigger1";
  13. /** *//**
  14. * 添加一个定时任务,使用默认的任务组名,触发器名,触发器组名
  15. * @param jobName 任务名
  16. * @param job 任务
  17. * @param time 时间设置,参考quartz说明文档
  18. * @throws SchedulerException
  19. * @throws ParseException
  20. */
  21. public static void addJob(String jobName,Job job,String time)
  22. throws SchedulerException, ParseException {
  23. Scheduler sched = sf.getScheduler();
  24. JobDetail jobDetail = new JobDetail(jobName, JOB_GROUP_NAME, job.getClass());//任务名,任务组,任务执行类
  25. //触发器
  26. CronTrigger trigger =
  27. new CronTrigger(jobName, TRIGGER_GROUP_NAME);//触发器名,触发器组
  28. trigger.setCronExpression(time);//触发器时间设定
  29. sched.scheduleJob(jobDetail,trigger);
  30. //启动
  31. if(!sched.isShutdown())
  32. sched.start();
  33. }
  34. /** *//**
  35. * 添加一个定时任务
  36. * @param jobName 任务名
  37. * @param jobGroupName 任务组名
  38. * @param triggerName 触发器名
  39. * @param triggerGroupName 触发器组名
  40. * @param job 任务
  41. * @param time 时间设置,参考quartz说明文档
  42. * @throws SchedulerException
  43. * @throws ParseException
  44. */
  45. public static void addJob(String jobName,String jobGroupName,
  46. String triggerName,String triggerGroupName,
  47. Job job,String time)
  48. throws SchedulerException, ParseException{
  49. Scheduler sched = sf.getScheduler();
  50. JobDetail jobDetail = new JobDetail(jobName, jobGroupName, job.getClass());//任务名,任务组,任务执行类
  51. //触发器
  52. CronTrigger trigger =
  53. new CronTrigger(triggerName, triggerGroupName);//触发器名,触发器组
  54. trigger.setCronExpression(time);//触发器时间设定
  55. sched.scheduleJob(jobDetail,trigger);
  56. if(!sched.isShutdown())
  57. sched.start();
  58. }
  59. /** *//**
  60. * 修改一个任务的触发时间(使用默认的任务组名,触发器名,触发器组名)
  61. * @param jobName
  62. * @param time
  63. * @throws SchedulerException
  64. * @throws ParseException
  65. */
  66. public static void modifyJobTime(String jobName,String time)
  67. throws SchedulerException, ParseException{
  68. Scheduler sched = sf.getScheduler();
  69. Trigger trigger = sched.getTrigger(jobName,TRIGGER_GROUP_NAME);
  70. if(trigger != null){
  71. CronTrigger ct = (CronTrigger)trigger;
  72. ct.setCronExpression(time);
  73. sched.resumeTrigger(jobName,TRIGGER_GROUP_NAME);
  74. }
  75. }
  76. /** *//**
  77. * 修改一个任务的触发时间
  78. * @param triggerName
  79. * @param triggerGroupName
  80. * @param time
  81. * @throws SchedulerException
  82. * @throws ParseException
  83. */
  84. public static void modifyJobTime(String triggerName,String triggerGroupName,
  85. String time)
  86. throws SchedulerException, ParseException{
  87. Scheduler sched = sf.getScheduler();
  88. Trigger trigger = sched.getTrigger(triggerName,triggerGroupName);
  89. if(trigger != null){
  90. CronTrigger ct = (CronTrigger)trigger;
  91. //修改时间
  92. ct.setCronExpression(time);
  93. //重启触发器
  94. sched.resumeTrigger(triggerName,triggerGroupName);
  95. }
  96. }
  97. /** *//**
  98. * 移除一个任务(使用默认的任务组名,触发器名,触发器组名)
  99. * @param jobName
  100. * @throws SchedulerException
  101. */
  102. public static void removeJob(String jobName)
  103. throws SchedulerException{
  104. Scheduler sched = sf.getScheduler();
  105. sched.pauseTrigger(jobName,TRIGGER_GROUP_NAME);//停止触发器
  106. sched.unscheduleJob(jobName,TRIGGER_GROUP_NAME);//移除触发器
  107. sched.deleteJob(jobName,JOB_GROUP_NAME);//删除任务
  108. }
  109. /** *//**
  110. * 移除一个任务
  111. * @param jobName
  112. * @param jobGroupName
  113. * @param triggerName
  114. * @param triggerGroupName
  115. * @throws SchedulerException
  116. */
  117. public static void removeJob(String jobName,String jobGroupName,
  118. String triggerName,String triggerGroupName)
  119. throws SchedulerException{
  120. Scheduler sched = sf.getScheduler();
  121. sched.pauseTrigger(triggerName,triggerGroupName);//停止触发器
  122. sched.unscheduleJob(triggerName,triggerGroupName);//移除触发器
  123. sched.deleteJob(jobName,jobGroupName);//删除任务
  124. }
  125. }


Job.class

  1. package cn.com.do1.component.common.job;
  2. import cn.com.do1.component.common.jdbc.ISimpleJdbcTemplateDao;
  3. import cn.com.do1.component.common.util.Constant;
  4. import cn.com.do1.component.yopin.service.ICouponsService;
  5. import cn.com.do1.dqdp.core.ConfigLoadExcetion;
  6. import cn.com.do1.dqdp.core.DqdpAppContext;
  7. import org.quartz.Job;
  8. import org.quartz.JobExecutionContext;
  9. import org.quartz.JobExecutionException;
  10. import java.util.List;
  11. import java.util.Map;
  12. /**
  13. * Created by ao.ouyang on 2015/8/3.
  14. * 订单job 1.定时更新代付订单的超时状态
  15. */
  16. public class OrderJob implements Job {
  17. private ISimpleJdbcTemplateDao simpleJdbcTemplateDao;
  18. private ICouponsService couponsService;
  19. @Override
  20. public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
  21. simpleJdbcTemplateDao = (ISimpleJdbcTemplateDao) DqdpAppContext.getSpringContext().getBean("simpleJdbcDao");
  22. couponsService = (ICouponsService) DqdpAppContext.getSpringContext().getBean("iCouponsService");
  23. try {
  24. List<Map<String, Object>> list = simpleJdbcTemplateDao.queryForList("select * from tb_91_order_info where datediff(NOW(),CREATE_TIME) >5 and ORDER_STATUS in (" + cn.com.do1.component.yopin.util.Constant.ORDER_STATUS.NO_PAY.value() + "," + cn.com.do1.component.yopin.util.Constant.ORDER_STATUS.IN.value() + ")");
  25. if(list.size()>0){
  26. for (Map map : list){
  27. String usrId = map.get("USR_ID").toString();
  28. couponsService.refundCash( map.get("ORDER_CODE").toString(),usrId);
  29. //更新超过5天未代付完成的订单为已超时
  30. simpleJdbcTemplateDao.update("update tb_91_order_info set ORDER_STATUS = " + cn.com.do1.component.yopin.util.Constant.ORDER_STATUS.TIME_OUT.value() + " where ORDER_CODE='"+ map.get("ORDER_CODE").toString()+"'");
  31. }
  32. }
  33. } catch (Exception e) {
  34. } catch (ConfigLoadExcetion configLoadExcetion) {
  35. configLoadExcetion.printStackTrace();
  36. }
  37. }
  38. }

quartz 实现调度任务 SchedulerManager的更多相关文章

  1. Quartz定时调度框架

    Quartz定时调度框架CronTrigger时间配置格式说明 CronTrigger时间格式配置说明 CronTrigger配置格式: 格式: [秒] [分] [小时] [日] [月] [周] [年 ...

  2. java 多线程——quartz 定时调度的例子

    java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...

  3. Spring整合Quartz分布式调度

    前言 为了保证应用的高可用和高并发性,一般都会部署多个节点:对于定时任务,如果每个节点都执行自己的定时任务,一方面耗费了系统资源,另一方面有些任务多次执行,可能引发应用逻辑问题,所以需要一个分布式的调 ...

  4. Spring整合Quartz分布式调度(山东数漫江湖)

    前言 为了保证应用的高可用和高并发性,一般都会部署多个节点:对于定时任务,如果每个节点都执行自己的定时任务,一方面耗费了系统资源,另一方面有些任务多次执行,可能引发应用逻辑问题,所以需要一个分布式的调 ...

  5. SpringBoot整合Quartz作为调度中心完整实用例子

    因为想要做一个类似于调度中心的东西,定时执行一些Job(通常是一些自定义程序或者可执行的jar包),搭了一个例子,总结了前辈们的相关经验和自己的一些理解,如有雷同或不当之处,望各位大佬见谅和帮忙指正. ...

  6. Quartz每次调度时被执行两次

    [关键字:重复执行.重复调用.每次执行两次.执行2次] 前言: 先说一下,项目背景.由于组内某成员在用Maven搭建项目时不规范,导致项目的名称与实际访问项目名称不一致.在部署项目时,必需要配一下虚拟 ...

  7. Quartz基础调度框架-第二篇服务

    很多应用场景Quartz运行于Windows服务 Conf 在这个基本结构里 是用来存放配置  和上一篇 控制台运行的一样的结构 jobs.xml 的配置清单 <!-- 任务配置--> & ...

  8. Quartz基础调度框架-第一篇控制台

    Quartz基础调度框架 Quartz核心的概念:scheduler任务调度.Job任务.Trigger触发器.JobDetail任务细节 结构 Conf 在这个基本结构里 是用来存放配置 publi ...

  9. Quartz.NET总结(四)Quartz 远程调度

    前面篇已经介绍了Quartz.NET的配置,使用和Cron表达式表达式的写法.基本上后台的定时任务的定时执行已经完成,并能正确的按照执行计划,执行相关的job . 然后,如果任务需要更新,停止某个任务 ...

随机推荐

  1. ORA-27090 故障一例

    近期的alert日志中碰到了ORA-27090的错误信息.其错误提示为Unable to reserve kernel resources for asynchronous disk I/O.依据这个 ...

  2. 好用的eclipse properties插件

    eclipse默认编辑器: 在有汉字的情况,特别是注释是汉字的情况,你会非常蛋疼的 JP的properties插件:http://propedit.sourceforge.jp/eclipse/upd ...

  3. JUC-Callable

    实现线程的方式有四种: 1,实现runnable接口: 2,继承Thread. 3,也就是本节的Callable接口. 4,使用线程池. 区别: 实现Callable接口的方式,相较于实现Runnab ...

  4. word技巧-文本转化表格

    工作中不断学习,总能得到一点点成就感! 样例:

  5. HDUOJ-----4512吉哥系列故事——完美队形I(LCIS)

    吉哥系列故事——完美队形I Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tot ...

  6. MFC图形绘制——绘制直尺和坐标系

    一.实验目的 1.掌握建立MFC应用程序的方法: 2.掌握映射模式. 二.实验内容 1.在MFC中绘制直尺,直尺需要有刻度,类似于日常学生使用的透明塑料直尺,需要建立四个直尺,分别分布在屏幕客户区的上 ...

  7. Android学习系列(2)--App自动更新之通知栏下载

    这篇文章是Android开发人员的必备知识,是我特别为大家整理和总结的,不求完美,但是有用.1.设计思路,使用VersionCode定义为版本升级参数. android为我们定义版本提供了2个属性:& ...

  8. MVC笔记 Controller相关技术

    一.Controller的责任 MVC的核心就是Controller(控制器),它负责处理浏览器传送过来的所有请求,并决定要将什么内容响应给浏览器.但Controller并不负责决定内容应该如何显示, ...

  9. java开发_eclipse导出为war文件,热部署到tomcat运行总结[转]

    在Myeclipse中,我们很容易做到这一步:把一个web项目生成war文件 其实在eclipse中,实现这样的功能,也是很简单的. 下面就看一下是怎样操作的吧! 新建一个web项目: 取名为:ecl ...

  10. Jsp通过Filter实现UrlRewriter原理

    web.xml文件: <?xml version="1.0" encoding="UTF-8"?> <web-app version=&quo ...