spring quartz集群 动态配置任务

来源:互联网 发布:解析视频软件 编辑:程序博客网 时间:2024/05/22 15:02
//表达式任务设置try {// 设置触发器CronTrigger cronTrigger = new CronTrigger("cronTrigger3", "DEFAULT");// 设置任务触发时间CronExpression cexp = new CronExpression("0/5 * * ? * * *");// 设置触发器cronTrigger.setCronExpression(cexp);// 设置任务内容JobDataMap jobDataMap = new JobDataMap();// 需要保存spring的bean类 才能反射出 调用方法jobDataMap.put("targetObject",springContext.getBean("simpleService"));// 调用方法jobDataMap.put("targetMethod", "testMethod2");jobDataMap.put("shouldRecover", "true");// 设置任务详细信息JobDetail newJob = new JobDetail();// 任务名称newJob.setName("jobDetail3");// 任务详细配置newJob.setJobDataMap(jobDataMap);// 分组newJob.setGroup("DEFAULT");// 实现类(由该类去通过反射调用提供的方法)newJob.setJobClass(MethodInvokingJobDetailFactoryBean.MethodInvokingJob.class);Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();// 持久化至数据库scheduler.scheduleJob(newJob, cronTrigger);scheduler.start();// jobStoreTX.storeJobAndTrigger(new SchedulingContext(), newJob,// cronTrigger);} catch (Exception e) {e.printStackTrace();}//根据开始时间 结束时间来设置//设置IDtrggerInfo.setId(IDGenerator.getId());String str=time;//判断开始时间是否为NUll if(str==null){return;}JobDataMap jobDataMap = new JobDataMap();// 需要保存spring的bean类 才能反射出 调用方法jobDataMap.put("targetObject",trggerInfo.getTargetObject());// 调用方法jobDataMap.put("targetMethod",METHOD);jobDataMap.put("taskInfoId", trggerInfo.getId());jobDataMap.put("taskType", trggerInfo.getTriggerType());jobDataMap.put("shouldRecover", "true");JobDetail jobDetail = new JobDetail();jobDetail.setGroup(GROUP);jobDetail.setName(trggerInfo.getId());jobDetail.setJobClass(DBClusterQuartzJobBean.class);jobDetail.setJobDataMap(jobDataMap);//获得操作类Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();SimpleDateFormat formatDate = new SimpleDateFormat(DateUtil.DEFAULT_TIMESTAMP_FORMAT);// 触发器名称 触发器分组 执行次数(从0开始计算) 间隔时间(毫秒级)SimpleTrigger simpleTrigger = new SimpleTrigger();// 设置分组名称simpleTrigger.setGroup(GROUP);// 触发器名称simpleTrigger.setName(jobDetail.getName()+Trigger);// SimpleTrigger.REPEAT_INDEFINITELY 不限次数// simpleTrigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);//执行次数一次simpleTrigger.setRepeatCount(1);//间隔 一毫秒simpleTrigger.setRepeatInterval(1);// 设置开始时间simpleTrigger.setStartTime(formatDate.parse(str));// 从1开始simpleTrigger.setTimesTriggered(1);scheduler.scheduleJob(jobDetail, simpleTrigger);//保存任务详情trggerInfo.setJobName(jobDetail.getName());trggerInfo.setTriggerName(simpleTrigger.getName());taskInfoDao.insertTaskInfo(trggerInfo);

相关示例在:http://daoshud1.iteye.com/blog/1955099下载
原创粉丝点击