quertz.xml selectResettingRefundsMoney updateResettingRefundsMoney 0 0 0 1 * ? 0 2 0/6 * * ? 实体类 package org.woke.oss.manager.Job;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;import or
实体类selectResettingRefundsMoney updateResettingRefundsMoney 0 0 0 1 * ? 0 2 0/6 * * ?
package org.woke.oss.manager.Job;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.woke.oss.common.exception.AdminCoreException;
import org.woke.oss.manager.ServiceProviderDataManager;
/**
* @Author:LiuHao
* @Date: Create in 18:22 2017/10/25
* 定时改变服务商退款额度
**/
@Slf4j
public class RefundsJob {
@Autowired
ServiceProviderDataManager serviceProviderDataManager;
/**
*@Author:LiuHao
*@Date:15:18 2017/10/25
*每个月的第一天的00:00::00的时候查询一次 将所有服务商的退款额度重置为押金数
**/
public void selectResettingRefundsMoney(){
try {
serviceProviderDataManager.selectResettingRefundsMoneyManager();
log.info("每月开始的时间 重置退款额度成功");
} catch (AdminCoreException e) {
log.info("每月开始的时间 重置退款额度失败");
e.printStackTrace();
}
}
/**
*@Author:LiuHao
*@Date:16:36 2017/10/25
*每过6个小时 更新一次退款额度
**/
public void updateResettingRefundsMoney(){
try {
serviceProviderDataManager.updateResettingRefundsMoneyManager();
log.info("每6个小时重置退款额度成功");
} catch (AdminCoreException e) {
log.error("每6个小时重置退款额度失败");
e.printStackTrace();
}
}
}
推送调度器
package org.woke.oss.manager.Job;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import org.springframework.stereotype.Component;
import org.woke.oss.common.emuns.AdminCoreCodeEmun;
import org.woke.oss.common.exception.AdminCoreException;
import org.woke.oss.common.test.MyJob1;
import org.woke.oss.dao.models.Push;
import java.text.ParseException;
/**
* @Author:LiuHao
* @Date: Create in 10:11 2017/10/26
* 推送调度器
**/
@Component
public class PushScheduler {
@Autowired
SchedulerFactoryBean schedulerFactoryBean;
private static SchedulerFactory schedulerfactory = new StdSchedulerFactory();
private static String groupName="triggerGroup";
private static String jobGroupName="jgroup1";
public String pushScheduler(String pushId,String time){
//通过schedulerFactory获取一个调度器
Scheduler scheduler=null;
try{
try {
// 通过schedulerFactory获取一个调度器
scheduler=schedulerFactoryBean.getScheduler();
// 创建jobDetail实例,绑定Job实现类
// 指明job的名称,所在组的名称,以及绑定job类
JobDetail job= JobBuilder.newJob(PushJob.class)
.withIdentity(pushId, jobGroupName)
.usingJobData("pushId",pushId)
.build();
// 使用cornTrigger规则 定时发送
Trigger trigger=TriggerBuilder.newTrigger().withIdentity(pushId+"Trigger", groupName)
.withSchedule(CronScheduleBuilder.cronSchedule(time))
.startNow().build();
// 把作业和触发器注册到任务调度中
scheduler.scheduleJob(job, trigger);
// 启动调度
scheduler.start();
} catch (SchedulerException e) {
e.printStackTrace();
throw new AdminCoreException(AdminCoreCodeEmun.PUSH_SCHEDULER_FAIL);
}
}catch(Exception e){
e.printStackTrace();
}
return null;
}
/**
* 从Scheduler 移除当前的Job
* @param
* @throws SchedulerException
* @throws ParseException
*/
public static void modifyJobTime(String jobName)
throws SchedulerException, ParseException {
Scheduler sched = schedulerfactory.getScheduler();
sched.deleteJob(JobKey.jobKey(jobName,jobGroupName));
}
}
// /**
// * 移除一个任务(使用默认的任务组名,触发器名,触发器组名)
// * @param jobName
// */
// public static void removeJob(String jobName) {
// try {
// Scheduler sched = gSchedulerFactory.getScheduler();
// sched.pauseTrigger(jobName, TRIGGER_GROUP_NAME);// 停止触发器
// sched.unscheduleJob(jobName, TRIGGER_GROUP_NAME);// 移除触发器
// sched.deleteJob(jobName, JOB_GROUP_NAME);// 删除任务
// } catch (Exception e) {
// throw new RuntimeException(e);
// }
// }
推送任务
package org.woke.oss.manager.Job;
import lombok.extern.slf4j.Slf4j;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import org.woke.oss.common.exception.AdminCoreException;
import org.woke.oss.dao.mapper.PushMapper;
import org.woke.oss.dao.models.Push;
import org.woke.oss.manager.PushManager;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
/**
* @Author:LiuHao
* @Date: Create in 10:07 2017/10/26
* 推送任务
**/
@Slf4j
@Component
public class PushJob implements Job {
@Autowired
PushManager pushManager;
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
Map map=jobExecutionContext.getMergedJobDataMap();
System.out.println(map.get("pushId"));
System.out.println("执行了定时器");
try {
System.out.println(1);
pushManager.sendOutPush(map.get("pushId")+"");
} catch (AdminCoreException e) {
e.printStackTrace();
String now=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
log.error("发送推送失败了,时间为{}",now);
}
}
}
pom.xml
JOB工厂类org.quartz-scheduler quartz2.2.3
package org.woke.oss.manager.Job;
import org.quartz.spi.TriggerFiredBundle;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.scheduling.quartz.AdaptableJobFactory;
/**
* @Author:LiuHao
* @Date: Create in 15:14 2017/11/17
**/
public class MyJobFactory extends AdaptableJobFactory {
//这个对象Spring会帮我们自动注入进来,也属于Spring技术范畴.
@Autowired
private AutowireCapableBeanFactory capableBeanFactory;
protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
//调用父类的方法
Object jobInstance = super.createJobInstance(bundle);
//进行注入,这属于Spring的技术,不清楚的可以查看Spring的API.
capableBeanFactory.autowireBean(jobInstance);
return jobInstance;
}
}
时间转corn表达式
package org.woke.oss.common.utils;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @Author:LiuHao
* @Date: Create in 16:35 2017/11/9
**/
public class quartzTime {
public static String getQuartzTime(Date time){
String string="";
SimpleDateFormat sj=new SimpleDateFormat("ss mm HH dd MM ? yyyy");
string=sj.format(time);
return string;
}
public static void main(String[] args) {
System.out.println( quartzTime.getQuartzTime(new Date()));
}
}
