动态定义quartz定时任务
来源:互联网 发布:网络大额度贷款 编辑:程序博客网 时间:2024/05/19 17:52
记录自己写的代码,肯定有不对的地方,参阅的话仅供参考。
这个用的是quartz-2.2.2.jar版本,动态设置了定时任务。
public class TaskManager { private static TaskManager instance ; private SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory(); private TaskManager(){}; public static TaskManager getInstance(){ if(instance == null) instance = new TaskManager(); return instance; } //添加job public void addJob(String jobName,String serviceName,String cronExpression,Map contextMap) throws Exception{ Scheduler sched = schedFact.getScheduler(); if(!sched.isStarted()) sched.start(); JobDetail jobDetail = newJob(TaskJob.class) .withIdentity(jobName, Scheduler.DEFAULT_GROUP) .usingJobData("serviceName", serviceName) .build(); for(Object key : contextMap.keySet()){ jobDetail.getJobDataMap().put(key.toString(), contextMap.get(key)); } Trigger trigger = newTrigger() .withIdentity(jobName+"Trigger", Scheduler.DEFAULT_GROUP) .withSchedule(cronSchedule(cronExpression)) .forJob(jobDetail) .build(); sched.scheduleJob(jobDetail, trigger); } //添加job public void addJob(String jobName,String serviceName,String cronExpression) throws Exception{ Scheduler sched = schedFact.getScheduler(); if(!sched.isStarted()) sched.start(); JobDetail jobDetail = newJob(TaskJob.class) .withIdentity(jobName, Scheduler.DEFAULT_GROUP) .usingJobData("serviceName", serviceName) .build(); Trigger trigger = newTrigger() .withIdentity(jobName+"Trigger", Scheduler.DEFAULT_GROUP) .withSchedule(cronSchedule(cronExpression)) .forJob(jobDetail) .build(); sched.scheduleJob(jobDetail, trigger); } //移除job public void removeJob(String jobName) throws Exception{ Scheduler sched = schedFact.getScheduler(); if(!sched.isStarted()) sched.start(); sched.unscheduleJob(triggerKey(jobName + "Trigger", Scheduler.DEFAULT_GROUP)); sched.deleteJob(jobKey(jobName, Scheduler.DEFAULT_GROUP)); }}
下面是要执行的job,写任务的逻辑
public class TaskJob implements Job { @Override public void execute(JobExecutionContext context) throws JobExecutionException { JobDataMap dataMap = context.getJobDetail().getJobDataMap(); String serviceName = dataMap.getString("serviceName"); System.out.println(serviceName); }}
下面是测试
public class TaskTest { public static void main(String[] args) throws Exception { TaskManager mm = TaskManager.getInstance(); for(int i=0;i<5;i++){ mm.addJob("测试"+i,"服务"+i, "0/10 * * * * ?"); } Thread.sleep(100000); }}
哦对,时间解析,我写了个简单的,仅供参考
public String transform(String month,String day,String week){ //month 范围 1-12 即1-12月 //day 范围1-31 即1-31日 注意特殊月份2月28天 最好1-28 //week 范围MON-SUN String result=""; if (week==null || week.equals("")) { //week 每周一次 ,他选其他都必须为null if (month==null || month.equals("")) { if (day==null || day.equals("")) { result=DAY; }else{ result="0 0 1 "+day+" * ?"; } }else { result="0 0 1 "+day+" "+month+" ?"; } }else{ result="0 0 1 ? * "+week; //每周一次 } return result; }
1 0
- 动态定义quartz定时任务
- quartz动态定时任务
- quartz 配置 动态定时任务
- Quartz实现动态定时任务
- quartz实现动态定时任务
- Quartz实现动态定时任务
- Quartz实现动态定时任务
- Quartz动态定时任务管理
- Spring Quartz 动态配置定时任务
- Spring+Quartz实现动态添加定时任务
- Spring+Quartz实现动态添加定时任务
- quartz动态添加和删除定时任务
- Spring Quartz 动态配置定时任务
- quartz系列(二):动态定时任务管理
- Spring整合Quartz实现动态定时任务
- 动态添加定时任务-quartz定时器
- quartz spring 实现动态定时任务
- quartz spring 实现动态定时任务
- python安装pyexcel error in pyexcel setup command: Invalid environment marker: python_version>="3"
- transcriptMode的3种情况
- java 日期转换函数
- Oracle 导出、导入某用户所有数据(包括表、视图、存储过程...)
- error C2220: 警告被视为错误 - 没有生成“object”文件
- 动态定义quartz定时任务
- 人无所舍必无所成
- 海量数据处理-面试题
- 操作系统精髓与设计原理(原书第6版)——学习笔记(5)
- 将 NSArray 进行倒序排列
- jvm gc 日志和dump参数
- Mac校验文件SHA、MD5
- Linux学习(4)之在Linux系统下安装Git,创建Git仓库
- 微信公众号 订阅号 生成带参数二维码