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;
       }  
   }  

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


新人写的,多担待


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值