spring定时器管理

private void startOrStop(UserScheduleFactoryBean userScheduleFactoryBean){
    boolean state = userScheduleFactoryBean.isRunning();
    // 如果当前worker未启动,则启动
    try {
        if (!state) {
            userScheduleFactoryBean.getScheduler().start();
        }
        else {
            userScheduleFactoryBean.getScheduler().standby();
        }
    } catch (SchedulerException e) {
        LOGGER.error("启动或停止worker时异常",e);
    }

}

/**
 * 执行单个任务
 * @param userScheduleFactoryBean
 * @param operatorId 选择的任务id
 * @param currentId 循环中当前任务id
 */
private void executeOne(UserScheduleFactoryBean userScheduleFactoryBean,String operatorId,String currentId){
    try{
        // 如果当前worker是选择的,获取需要执行的方法并执行
        if (StringUtils.isNotEmpty(operatorId) && currentId.equalsIgnoreCase(operatorId)) {
            Scheduler scheduler = userScheduleFactoryBean.getScheduler();
            String[] jobGroupNames = scheduler.getJobGroupNames();
            if (!ArrayUtils.isEmpty(jobGroupNames)) {
                for (String jobGroupName : jobGroupNames) {
                    String[] jobNames = scheduler.getJobNames(jobGroupName);
                    if (!ArrayUtils.isEmpty(jobNames)) {
                        for (String jobName : jobNames) {
                            JobDetail jobDetail = scheduler.getJobDetail(jobName, jobGroupName);
                            MethodInvokingJobDetailFactoryBean b = (MethodInvokingJobDetailFactoryBean) jobDetail
                                    .getJobDataMap().get("methodInvoker");
                            Method method = b.getPreparedMethod();
                            method.invoke(b.getTargetObject());
                        }
                    }
                }
            }
        }
    }catch (Exception e){
        LOGGER.error("执行单个worker时异常",e);
    }
}
public class UserScheduleFactoryBean extends SchedulerFactoryBean {
    private String schedulerName;
    private String remark;
    private int index;

    private UserCronTriggerBean userCronTriggerBean;

    public String getSchedulerName() {
        return schedulerName;
    }

    @Override
    public void setSchedulerName(String schedulerName) {
        this.schedulerName = schedulerName;
        super.setSchedulerName(schedulerName);
    }

    @Override
    public void setTriggers(Trigger[] triggers) {
        super.setTriggers(triggers);
        for (Trigger item : triggers) {
            if (item != null && item instanceof CronTriggerBean) {
                userCronTriggerBean = (UserCronTriggerBean) item;
            }
        }
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public int getIndex() {
        return index;
    }

    public void setIndex(int index) {
        this.index = index;
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值