spring quartz集群 动态配置任务

//表达式任务设置
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();
		}
//根据开始时间 结束时间来设置
//设置ID
		trggerInfo.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下载

你可能感兴趣的:(spring,quartz)