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; } }![]()
spring定时器管理
最新推荐文章于 2025-03-20 10:41:15 发布