产品需要设置自动上下线,不让用自带的timer 说是很low。。新人也没咋接触过这玩意儿,就着百度写了一下
增加任务:
public static boolean addJob(String sid,String startTime,String type,String jobName,String triggerName) throws ParseException, SchedulerException {
if(type.equals("1")){
try {
//scheduler = getgSchedulerFactory().getScheduler();
SimpleDateFormat formatter=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date startDate=formatter.parse(startTime);
JobDetail job = newJob(AutoSellingOnLineJob.class).withIdentity(jobName, autoSellingJobGroup).build();
job.getJobDataMap().put("sid", sid);
job.getJobDataMap().put("autoTime", startTime);
Trigger trigger = newTrigger().withIdentity(triggerName, autoSellingJobGroup).startAt(startDate).forJob(job).build();
scheduler.scheduleJob(job, trigger);
return true;
}catch(Exception e){
e.printStackTrace();
return false;
}
}else{
try {
//scheduler = getgSchedulerFactory().getScheduler();
SimpleDateFormat formatter=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date startDate=formatter.parse(startTime);
JobDetail job = newJob(AutoSellingOutLineJob.class).withIdentity(jobName, autoSellingJobGroup).build();
job.getJobDataMap().put("sid", sid);
job.getJobDataMap().put("autoTime", startTime);
Trigger trigger = newTrigger().withIdentity(triggerName, autoSellingJobGroup).startAt(startDate).forJob(job).build();
scheduler.scheduleJob(job, trigger);
return true;
}catch(Exception e){
e.printStackTrace();
return false;
}
}
}
传进来的参数jobName和triggerName根据id生成就好,必须要唯一,type是我用来区分是上架还是下架的标识, job.getJobDataMap().put可以增加参数
到点后会自动去设置的Job里找到实现方法(实现了Job接口),根据getMergedJobDataMap()可以拿到传过来的参数。
删除任务:
public static boolean removeJob(String jobName,String triggerName,String groupName) {
try {
Trigger trigger = newTrigger().withIdentity(triggerName,TaskManager.autoSellingJobGroup).build();
scheduler.unscheduleJob(trigger.getKey());// 移除触发器
JobKey jobKey=new JobKey(jobName, groupName);
scheduler.deleteJob(jobKey);// 删除任务
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
这个就不多说了,根据参数删除任务
新人写的,多担待