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下载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值