quartz使用案例

@Service
public class QuartzServiceImpl extends
        BaseServiceImpl<JobDetails, String, QuartzTaskVO> implements
        QuartzService {

    private JobDetailsJpaDao jobDetailsJpaDao;

    public JobDetailsJpaDao getJobDetailsJpaDao() {
        return jobDetailsJpaDao;
    }

    @Autowired
    public QuartzServiceImpl(JobDetailsJpaDao jobDetailsJpaDao,
            BaseJdbcDao baseJdbcDao) {
        super((BaseJpaRepository<JobDetails, String>) jobDetailsJpaDao,
                baseJdbcDao);
        this.jobDetailsJpaDao = jobDetailsJpaDao;
    }

    @Autowired
    private Scheduler scheduler;

    @ServiceDesc("查询当前活动的任务列表")
    @Override
    public Map<String, Object> queryActiveTaskMap(JobDetailsQueryParam param) {
        SQLQueryUtil util = new SQLQueryUtil();
        util.addTable("QRTZ_TRIGGERS");
        util.addColumn("SCHED_NAME", "schedule_name");
        util.addColumn("JOB_NAME", "job_name");
        util.addColumn("JOB_GROUP", "job_group");
        util.addColumn("TRIGGER_NAME", "trigger_name");
        util.addColumn("TRIGGER_GROUP", "trigger_group");
        util.addColumn("PREV_FIRE_TIME", "prev_fire_time");
        util.addColumn("NEXT_FIRE_TIME", "next_fire_time");
        util.addColumn("START_TIME", "start_time");
        util.addColumn("END_TIME", "end_time");
        util.addColumn("TRIGGER_STATE", "trigger_state");

        return super.queryDataMapNotExtend(util, QuartzTaskVO.class, param);
    }

    @Override
    @ServiceDesc("启动任务")
    public void startTask(String jobId, String triggerId) throws AppException {
        TaskId id = new TaskId(jobId, triggerId);
        try {
            scheduler.scheduleJob(id.getJobDetails().getJobDetail(), id
                    .getTriggers().getTrigger());
        } catch (SchedulerException e) {
            throw new AppException(ResultCode.Failure, e.getMessage());
        } catch (ClassNotFoundException e) {
            throw new AppException(ResultCode.Failure, e.getMessage());
        }
    }

    @Override
    @ServiceDesc("暂停任务")
    public void pauseTask(String... ids) throws AppException {
        try {
            for (String idStr : ids) {
                scheduler.pauseJob(new TaskId(idStr).getJobKey());
            }
        } catch (SchedulerException e) {
            throw new AppException(ResultCode.Failure, e.getMessage());
        }
    }

    @Override
    @ServiceDesc("恢复任务")
    public void resumeTask(String... ids) throws AppException {
        try {
            for (String idStr : ids) {
                scheduler.resumeJob(new TaskId(idStr).getJobKey());
            }
        } catch (SchedulerException e) {
            throw new AppException(ResultCode.Failure, e.getMessage());
        }
    }

    @Override
    @ServiceDesc("删除任务")
    public void deleteTask(String... ids) throws AppException {
        try {
            for (String idStr : ids) {
                scheduler.deleteJob(new TaskId(idStr).getJobKey());
            }
        } catch (SchedulerException e) {
            throw new AppException(ResultCode.Failure, e.getMessage());
        }
    }

}

class TaskId {

    /**
     * id字符串格式: jobName:jobGroup;triggerName:triggerGroup
     */
    public TaskId(String id) {
        this.jobKey = new JobKey(id.split(";")[0].split(":")[0],
                id.split(";")[0].split(":")[1]);
        this.triggerKey = new TriggerKey(id.split(";")[1].split(":")[0],
                id.split(";")[1].split(":")[1]);
    }

    public TaskId(String jobId, String triggerId) {
        JobDetailsService jobDetailsService = (JobDetailsService) SpringContextUtil
                .getUtil().getBean(JobDetailsService.class);
        TriggersService triggersService = (TriggersService) SpringContextUtil
                .getUtil().getBean(TriggersService.class);
        this.jobDetails = jobDetailsService.get(jobId);
        this.triggers = triggersService.get(triggerId);
        this.jobKey = new JobKey(jobDetails.getJobName(),
                jobDetails.getJobGroup());
        this.triggerKey = new TriggerKey(triggers.getTriggerName(),
                triggers.getTriggerGroup());
    }

    private JobDetails jobDetails;

    private Triggers triggers;

    private JobKey jobKey;

    private TriggerKey triggerKey;

    public JobDetails getJobDetails() {
        return jobDetails;
    }

    public void setJobDetails(JobDetails jobDetails) {
        this.jobDetails = jobDetails;
    }

    public Triggers getTriggers() {
        return triggers;
    }

    public void setTriggers(Triggers triggers) {
        this.triggers = triggers;
    }

    public JobKey getJobKey() {
        return jobKey;
    }

    public void setJobKey(JobKey jobKey) {
        this.jobKey = jobKey;
    }

    public TriggerKey getTriggerKey() {
        return triggerKey;
    }

    public void setTriggerKey(TriggerKey triggerKey) {
        this.triggerKey = triggerKey;
    }

}

 

转载于:https://www.cnblogs.com/hwaggLee/p/4827939.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值