//表达式任务设置
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下载
分享到:
相关推荐
java + quartz实现定时任务,实现集群配置,在集群环境下多节点运行定时Quartz定任务,就会存在重复处理任务的现象,为解决这一问题,下面我将介绍使用 Quartz 的 TASK ( 12 张表)实例化到数据库,基于数据库自动...
NULL 博文链接:https://vista-move.iteye.com/blog/2274246
NULL 博文链接:https://daoshud1.iteye.com/blog/1955099
NULL 博文链接:https://kissroom112.iteye.com/blog/2224442
自己弄了将近一天的成果。主要是修改MethodInvokingJobDetailFactoryBean这个类。
NULL 博文链接:https://fanshuyao.iteye.com/blog/2392350
一个基于springboot的quartz集群dome。 向http://localhost:9090/job/addjob注入3个参数 类名:(及时定时任务的类如:com.ybjdw.site.job.NewJob) 组名:随意 定时启动方法:如“0/3 * * * * ?”(每3秒启动一次...
spring-cloud-alibaba+dubbo+nacos+quartz以yml配置方式实现
本人花费多日时间,亲测有效。所需文件代码完整,只需导入常用开发IDE和mysql数据库即可正常使用。
需要把app部署在多台服务器上,但只能让其中一台服务器的job执行,一台服务器挂了,另一台还能继续执行job,通过网上查找资料,都是java工程的方式,不好部署并测试,经过二天辛苦整合,终于整理成一个单spring web...
使用Spring Quartz执行定时任务
spring 集成quartz定时任务 用数据库实现quartz的集群
spring-boot集成quartz实现动态任务管理,采用数据库存储方式,建表语句已经打包在一起,支持分布式集群。 代码开箱即用,没有集成业务模块,大家可以根据自己的业务场景自己去实现Job类即可。
NULL 博文链接:https://soulshard.iteye.com/blog/337886
最近项目中使用了spring+Quartz定时任务、但是项目最近要集群部署、多个APP下如何利用Quartz 协调处理任务。 大家可以思考一下、现在有 A、B、C三个应用同时作为集群服务器对外统一提供服务、每个应用下各有一个...
NULL 博文链接:https://medbricom.iteye.com/blog/1782765
本文章是关于springboot集成quartz集群的步骤,LZ亲测。
springboot 集成 quartz 集群 加 sql 等 文章介绍 单机加集群都有 https://blog.csdn.net/weixin_42749765/article/details/88532413