定时任务

public class GpSecondQuartzJob implements Job {
  private Logger logger = LoggerFactory.getLogger(getClass());
  private Long gsId;
  private GpSecItermService gpSecItermServiceImpl;

  @Override
  public void execute(JobExecutionContext context) throws JobExecutionException {
    if (gpSecItermServiceImpl== null) {
      logger.debug("--定时任务-gpSecItermServiceImpl==null---");
    } else {
      gpSecItermServiceImpl.validate(gsId);
    }
  }

  public Long getGsId() {
    return gsId;
  }

  public void setGsId(Long gsId) {
    this.gsId = gsId;
  }

  public GpSecItermService getWsSectermServiceImpl() {
    return gpSecItermServiceImpl;
  }

  public void setGpSectermServiceImpl(GpSecItermService gpSectermServiceImpl) {
    this.gpSectermServiceImpl= gpSectermServiceImpl;
  }
}
public class GpSecondQuartzManager {
    private static Logger logger = LoggerFactory.getLogger(GpSecondQuartzManager .class);
    private static SchedulerFactory sf = new StdSchedulerFactory();
    private static final String JOB_GROUP_NAME = "gpSecondGroup";
    private static final String TRIGGER_NAME = "gpSecondTrigger";
    private static final String TRIGGER_GROUP_NAME = "gpSecondTriggerGroup";

    /**
     * 添加一个定时任务,使用默认的任务组名,触发器名,触发器组名
     * 
     * @param jobName 任务名
     * @param jobClass 任务类
     * @param jobDataMap 任务参数
     * @param runTime 时间设置,参考quartz说明文档
     * @throws SchedulerException
     * @throws ParseException
     */
    public static synchronized void addJob(String jobName, Class<? extends Job> jobClass, JobDataMap jobDataMap, Date runTime)
            throws SchedulerException, ParseException {
        logger.debug("--定时任务---");
        Scheduler sched = sf.getScheduler();
        Trigger trigger = sched.getTrigger(TriggerKey.triggerKey(jobName + TRIGGER_NAME, TRIGGER_GROUP_NAME));
        if (trigger != null) {
          logger.debug("--删除已存在的定时任务---");
            removeJob(jobName);
        }
        // org.quartz.JobBuilder.newJob --通过JobBuilder构建Job
        JobDetail job = newJob(jobClass).withIdentity(jobName, JOB_GROUP_NAME).usingJobData(jobDataMap).build();
        // 触发器
        trigger = newTrigger().withIdentity(jobName + TRIGGER_NAME, TRIGGER_GROUP_NAME).startAt(runTime).build();
        sched.scheduleJob(job, trigger);
        // 启动
        if (!sched.isShutdown()) sched.start();
        logger.debug("--新增定时任务成功---");
    }

    /**
     * 移除一个任务(使用默认的任务组名,触发器名,触发器组名)
     * 
     * @param jobName
     * @throws SchedulerException
     */
    public static synchronized void removeJob(String jobName) throws SchedulerException {
        Scheduler sched = sf.getScheduler();
        sched.pauseTrigger(TriggerKey.triggerKey(jobName + TRIGGER_NAME, TRIGGER_GROUP_NAME));// 停止触发器
        sched.unscheduleJob(TriggerKey.triggerKey(jobName + TRIGGER_NAME, TRIGGER_GROUP_NAME));// 移除触发器
        sched.deleteJob(JobKey.jobKey(jobName, JOB_GROUP_NAME));// 删除任务
    }

    public static SchedulerFactory getSf() {
        return sf;
    }
}

调用

Object gpSecItermServiceImpl= SpringContextUtils.getBean(GpWsSecEvalItermService.class);
		JobDataMap jobDataMap = new JobDataMap();
		jobDataMap.put("gsId", gsId);
		jobDataMap.put("gpSecItermServiceImpl", gpSecItermServiceImpl);
		Date runTime = new Date(now.getTime() + secondQuoStageTime * 1000);
		try {
				GpSecondQuartzManager.addJob(NumberUtils.num2Str(gsId),GpSecondQuartzJob.class,jobDataMap, runTime);
		} catch (SchedulerException | ParseException e) {
			logger.error(e.getMessage(), e);
			rtDTO.setMsg("添加二次报价定时失败!");
			rtDTO.setSuccess(false);
		}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值