quartz 定时任务 动态增加与取消 传参

产品需要设置自动上下线,不让用自带的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;
       }  
   }  

这个就不多说了,根据参数删除任务


新人写的,多担待


你可能感兴趣的:(quartz 定时任务 动态增加与取消 传参)