quartz 实现调度任务 SchedulerManager
package cn.com.do1.component.common.util;import org.quartz.*;import org.quartz.impl.StdSchedulerFactory;import java.text.ParseException;/*** Created by ao.ouyang on 2015/8/3.* 任务调度管理*/public class SchedulerManager {private static SchedulerFactory sf = new StdSchedulerFactory();private static String JOB_GROUP_NAME = "group1";private static String TRIGGER_GROUP_NAME = "trigger1";/** *//*** 添加一个定时任务,使用默认的任务组名,触发器名,触发器组名* @param jobName 任务名* @param job 任务* @param time 时间设置,参考quartz说明文档* @throws SchedulerException* @throws ParseException*/public static void addJob(String jobName,Job job,String time)throws SchedulerException, ParseException {Scheduler sched = sf.getScheduler();JobDetail jobDetail = new JobDetail(jobName, JOB_GROUP_NAME, job.getClass());//任务名,任务组,任务执行类//触发器CronTrigger trigger =new CronTrigger(jobName, TRIGGER_GROUP_NAME);//触发器名,触发器组trigger.setCronExpression(time);//触发器时间设定sched.scheduleJob(jobDetail,trigger);//启动if(!sched.isShutdown())sched.start();}/** *//*** 添加一个定时任务* @param jobName 任务名* @param jobGroupName 任务组名* @param triggerName 触发器名* @param triggerGroupName 触发器组名* @param job 任务* @param time 时间设置,参考quartz说明文档* @throws SchedulerException* @throws ParseException*/public static void addJob(String jobName,String jobGroupName,String triggerName,String triggerGroupName,Job job,String time)throws SchedulerException, ParseException{Scheduler sched = sf.getScheduler();JobDetail jobDetail = new JobDetail(jobName, jobGroupName, job.getClass());//任务名,任务组,任务执行类//触发器CronTrigger trigger =new CronTrigger(triggerName, triggerGroupName);//触发器名,触发器组trigger.setCronExpression(time);//触发器时间设定sched.scheduleJob(jobDetail,trigger);if(!sched.isShutdown())sched.start();}/** *//*** 修改一个任务的触发时间(使用默认的任务组名,触发器名,触发器组名)* @param jobName* @param time* @throws SchedulerException* @throws ParseException*/public static void modifyJobTime(String jobName,String time)throws SchedulerException, ParseException{Scheduler sched = sf.getScheduler();Trigger trigger = sched.getTrigger(jobName,TRIGGER_GROUP_NAME);if(trigger != null){CronTrigger ct = (CronTrigger)trigger;ct.setCronExpression(time);sched.resumeTrigger(jobName,TRIGGER_GROUP_NAME);}}/** *//*** 修改一个任务的触发时间* @param triggerName* @param triggerGroupName* @param time* @throws SchedulerException* @throws ParseException*/public static void modifyJobTime(String triggerName,String triggerGroupName,String time)throws SchedulerException, ParseException{Scheduler sched = sf.getScheduler();Trigger trigger = sched.getTrigger(triggerName,triggerGroupName);if(trigger != null){CronTrigger ct = (CronTrigger)trigger;//修改时间ct.setCronExpression(time);//重启触发器sched.resumeTrigger(triggerName,triggerGroupName);}}/** *//*** 移除一个任务(使用默认的任务组名,触发器名,触发器组名)* @param jobName* @throws SchedulerException*/public static void removeJob(String jobName)throws SchedulerException{Scheduler sched = sf.getScheduler();sched.pauseTrigger(jobName,TRIGGER_GROUP_NAME);//停止触发器sched.unscheduleJob(jobName,TRIGGER_GROUP_NAME);//移除触发器sched.deleteJob(jobName,JOB_GROUP_NAME);//删除任务}/** *//*** 移除一个任务* @param jobName* @param jobGroupName* @param triggerName* @param triggerGroupName* @throws SchedulerException*/public static void removeJob(String jobName,String jobGroupName,String triggerName,String triggerGroupName)throws SchedulerException{Scheduler sched = sf.getScheduler();sched.pauseTrigger(triggerName,triggerGroupName);//停止触发器sched.unscheduleJob(triggerName,triggerGroupName);//移除触发器sched.deleteJob(jobName,jobGroupName);//删除任务}}
Job.class
package cn.com.do1.component.common.job;import cn.com.do1.component.common.jdbc.ISimpleJdbcTemplateDao;import cn.com.do1.component.common.util.Constant;import cn.com.do1.component.yopin.service.ICouponsService;import cn.com.do1.dqdp.core.ConfigLoadExcetion;import cn.com.do1.dqdp.core.DqdpAppContext;import org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;import java.util.List;import java.util.Map;/*** Created by ao.ouyang on 2015/8/3.* 订单job 1.定时更新代付订单的超时状态*/public class OrderJob implements Job {private ISimpleJdbcTemplateDao simpleJdbcTemplateDao;private ICouponsService couponsService;@Overridepublic void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {simpleJdbcTemplateDao = (ISimpleJdbcTemplateDao) DqdpAppContext.getSpringContext().getBean("simpleJdbcDao");couponsService = (ICouponsService) DqdpAppContext.getSpringContext().getBean("iCouponsService");try {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() + ")");if(list.size()>0){for (Map map : list){String usrId = map.get("USR_ID").toString();couponsService.refundCash( map.get("ORDER_CODE").toString(),usrId);//更新超过5天未代付完成的订单为已超时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()+"'");}}} catch (Exception e) {} catch (ConfigLoadExcetion configLoadExcetion) {configLoadExcetion.printStackTrace();}}}
quartz 实现调度任务 SchedulerManager的更多相关文章
- Quartz定时调度框架
Quartz定时调度框架CronTrigger时间配置格式说明 CronTrigger时间格式配置说明 CronTrigger配置格式: 格式: [秒] [分] [小时] [日] [月] [周] [年 ...
- java 多线程——quartz 定时调度的例子
java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...
- Spring整合Quartz分布式调度
前言 为了保证应用的高可用和高并发性,一般都会部署多个节点:对于定时任务,如果每个节点都执行自己的定时任务,一方面耗费了系统资源,另一方面有些任务多次执行,可能引发应用逻辑问题,所以需要一个分布式的调 ...
- Spring整合Quartz分布式调度(山东数漫江湖)
前言 为了保证应用的高可用和高并发性,一般都会部署多个节点:对于定时任务,如果每个节点都执行自己的定时任务,一方面耗费了系统资源,另一方面有些任务多次执行,可能引发应用逻辑问题,所以需要一个分布式的调 ...
- SpringBoot整合Quartz作为调度中心完整实用例子
因为想要做一个类似于调度中心的东西,定时执行一些Job(通常是一些自定义程序或者可执行的jar包),搭了一个例子,总结了前辈们的相关经验和自己的一些理解,如有雷同或不当之处,望各位大佬见谅和帮忙指正. ...
- Quartz每次调度时被执行两次
[关键字:重复执行.重复调用.每次执行两次.执行2次] 前言: 先说一下,项目背景.由于组内某成员在用Maven搭建项目时不规范,导致项目的名称与实际访问项目名称不一致.在部署项目时,必需要配一下虚拟 ...
- Quartz基础调度框架-第二篇服务
很多应用场景Quartz运行于Windows服务 Conf 在这个基本结构里 是用来存放配置 和上一篇 控制台运行的一样的结构 jobs.xml 的配置清单 <!-- 任务配置--> & ...
- Quartz基础调度框架-第一篇控制台
Quartz基础调度框架 Quartz核心的概念:scheduler任务调度.Job任务.Trigger触发器.JobDetail任务细节 结构 Conf 在这个基本结构里 是用来存放配置 publi ...
- Quartz.NET总结(四)Quartz 远程调度
前面篇已经介绍了Quartz.NET的配置,使用和Cron表达式表达式的写法.基本上后台的定时任务的定时执行已经完成,并能正确的按照执行计划,执行相关的job . 然后,如果任务需要更新,停止某个任务 ...
随机推荐
- exception javax.crypto.BadPaddingException: Given final block not properly padded
exception javax.crypto.BadPaddingException: Given final block not properly padded CreationTime--20 ...
- Eureka集群试验的一点总结
先简单描述一下试验: 试验在一台机器上进行,假设有host文件中配置了以下内容 127.0.0.1 left 127.0.0.1 center 127.0.0.1 right 试验中搭建三个注册中心实 ...
- java 生成可执行jar包
jar -cvfm my.jar [配置主函数入口文件] [包] Main-Class: 包名.类名 注意“:”后边有一个空格,类名后边要有回车换行
- vsftp限制FTP用户只能访问自己的目录
修改配置文件/etc/vsftpd/vsftpd.conf chroot_local_user=YESallow_writeable_chroot=YESchroot_list_enable=YESc ...
- 如何在 CentOS 7 中安装、配置和安全加固 FTP 服务
步骤 1:安装 FTP 服务器 1. 安装 vsftpd 服务器很直接,只要在终端运行下面的命令. # yum install vsftpd 2. 安装完成后,服务先是被禁用的,因此我们需要手动启动, ...
- 突破单机多实例Elasticsearch
默认大家都是单机单实例es,在实验环境下想尽可能模拟各种场景.单机多实例就出来了... 实验拓扑图 01.es安装这里就不说了 详情:http://www.cnblogs.com/xiaochina/ ...
- openstack里面的Provider network 和 Tenant network 的区别
openstack里面的Provider network 和 Tenant network 的区别 openstack里面的网络相对复杂.经常有人对几个网络概念搞混淆,这里基本说明下 Openstac ...
- Java中entity(实体类)的写法规范
在日常的Java项目开发中,entity(实体类)是必不可少的,它们一般都有很多的属性,并有相应的setter和getter方法.entity(实体类)的作用一般是和数据表做映射.所以快速写出规范的e ...
- HDUOJ---The Moving Points
The Moving Points Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- Setting up a static IP address in Ubuntu
sudo gedit /etc/network/interfaces Change the line iface eth0 inet dhcp to iface eth0 inet static an ...