package com.xiaozhi.blog.quartz; import java.io.File; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.JobKey; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.Trigger; import org.quartz.TriggerBuilder; import org.quartz.TriggerKey; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.quartz.SchedulerFactoryBean; import org.springframework.stereotype.Service; import com.xiaozhi.blog.mongo.MongoUserDao; import com.xiaozhi.blog.vo.SinaAccessToken; import com.xiaozhi.blog.vo.SinaPost; @Service public class SinaBlogSchedulerService { private static Log logger = LogFactory.getLog(SinaBlogSchedulerService.class); @Autowired private SchedulerFactoryBean quartzScheduler ; @Autowired private MongoUserDao mongoUserDao; /** * 增加定时任务 * @param post */ public void addSinaBlogScheduler(SinaPost post){ try { Scheduler sched = quartzScheduler.getScheduler(); JobDetail job = JobBuilder.newJob(MySinaBlogJob.class).withIdentity(post.getId()+"_job", post.getUid()).requestRecovery().build(); job.getJobDataMap().put("post", post);//传递参数到job中 SinaAccessToken accessToken = mongoUserDao.getAccessTokenByUser(post.getUid()); job.getJobDataMap().put("accessToken", accessToken); Trigger trigger = TriggerBuilder.newTrigger() .withIdentity(TriggerKey.triggerKey(post.getId()+"_trigger", post.getUid())) .startAt(post.getFutureDate()) .build(); sched.scheduleJob(job, trigger); } catch (SchedulerException e) { // TODO Auto-generated catch block logger.error("----------------------->addSinaBlogScheduler error :", e.fillInStackTrace()); } } /** * 删除定时任务 * @param post */ public void removeSinaBlogScheduler(SinaPost post){ try { Scheduler sched = quartzScheduler.getScheduler(); sched.deleteJob(JobKey.jobKey(post.getId()+"_job", post.getUid())); logger.debug("----------------------->filepath :"+post.getFilePath()); //删除对应的图片 if(post.getFilePath()!=null){ File file = new File(post.getFilePath()); if(file!=null && file.isFile())file.delete(); } } catch (Exception e) { // TODO Auto-generated catch block logger.error("----------------------->removeSinaBlogScheduler error :", e.fillInStackTrace()); } } }