quartz 实现作业调度
来源:互联网 发布:手机淘宝模板如何制作 编辑:程序博客网 时间:2024/05/16 12:03
Quartz的原理不是很复杂,只要搞明白几个概念,然后知道如何去启动和关闭一个调度程序即可。
1、Job
表示一个工作,要执行的具体内容。此接口中只有一个方法
void execute(JobExecutionContext context)
2、JobDetail
JobDetail表示一个具体的可执行的调度程序,Job是这个可执行程调度程序所要执行的内容,另外JobDetail还包含了这个任务调度的方案和策略。
3、Trigger代表一个调度参数的配置,什么时候去调。
4、Scheduler代表一个调度容器,一个调度容器中可以注册多个JobDetail和Trigger。当Trigger与JobDetail组合,就可以被Scheduler容器调度了。
代码示例:
public class BackupDBTask{
private SchedulerFactory schedulerFactory;
private Scheduler scheduler;
public void startBackupTask(){
schedulerFactory = new StdSchedulerFactory();
try {
// 通过schedulerFactory获取一个调度器
scheduler = schedulerFactory.getScheduler();
// 创建jobDetail实例,绑定Job实现类
// 指明job的名称,所在组的名称,以及绑定job类
JobDetail jobDetail=JobBuilder.newJob(BackUpJob.class).withIdentity("job", "jgroup").build();
jobDetail.getJobDataMap().put("taskId", "0");
jobDetail.getJobDataMap().put("gourpId", "1");
jobDetail.getJobDataMap().put("sendContent", "大家好,发工资了!");
jobDetail.getJobDataMap().put("tempId", "湖南长沙");
// 定义调度触发规则
// 使用simpleTrigger规则 2秒一次 运行三次
Trigger trigger=TriggerBuilder.newTrigger().withIdentity("simpleTrigger", "triggerGroup")
.withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(2).withRepeatCount(2))
.startNow().build();
// 使用cornTrigger规则 每天10点42分
// Trigger trigger=TriggerBuilder.newTrigger().withIdentity("simpleTrigger", "triggerGroup")
// .withSchedule(CronScheduleBuilder.cronSchedule("0 42 10 * * ? *"))
// .startNow().build();
// 把作业和触发器注册到任务调度中
scheduler.scheduleJob(jobDetail, trigger);
// 开始scheduler对任务进行调度
scheduler.start();
// 暂停调度
// scheduler.standby();
// 停止scheduler
// scheduler.shutdown();
} catch (SchedulerException e) {
e.printStackTrace();
}
}
public static void main(String[] args){
BackupDBTask dbTask = new BackupDBTask();
dbTask.startBackupTask();
}
}
private SchedulerFactory schedulerFactory;
private Scheduler scheduler;
public void startBackupTask(){
schedulerFactory = new StdSchedulerFactory();
try {
// 通过schedulerFactory获取一个调度器
scheduler = schedulerFactory.getScheduler();
// 创建jobDetail实例,绑定Job实现类
// 指明job的名称,所在组的名称,以及绑定job类
JobDetail jobDetail=JobBuilder.newJob(BackUpJob.class).withIdentity("job", "jgroup").build();
jobDetail.getJobDataMap().put("taskId", "0");
jobDetail.getJobDataMap().put("gourpId", "1");
jobDetail.getJobDataMap().put("sendContent", "大家好,发工资了!");
jobDetail.getJobDataMap().put("tempId", "湖南长沙");
// 定义调度触发规则
// 使用simpleTrigger规则 2秒一次 运行三次
Trigger trigger=TriggerBuilder.newTrigger().withIdentity("simpleTrigger", "triggerGroup")
.withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(2).withRepeatCount(2))
.startNow().build();
// 使用cornTrigger规则 每天10点42分
// Trigger trigger=TriggerBuilder.newTrigger().withIdentity("simpleTrigger", "triggerGroup")
// .withSchedule(CronScheduleBuilder.cronSchedule("0 42 10 * * ? *"))
// .startNow().build();
// 把作业和触发器注册到任务调度中
scheduler.scheduleJob(jobDetail, trigger);
// 开始scheduler对任务进行调度
scheduler.start();
// 暂停调度
// scheduler.standby();
// 停止scheduler
// scheduler.shutdown();
} catch (SchedulerException e) {
e.printStackTrace();
}
}
public static void main(String[] args){
BackupDBTask dbTask = new BackupDBTask();
dbTask.startBackupTask();
}
}
public class BackUpJob implements Job {
public void execute(JobExecutionContext context) throws JobExecutionException{
JobDataMap dataMap = context.getJobDetail().getJobDataMap();
String groupId = dataMap.getString("gourpId");
String sendContent = dataMap.getString("sendContent");
String tempId = dataMap.getString("tempId");
System.out.println("groupId为: "+groupId+" 发送内容为: "+sendContent+" 发送平台为:"+tempId+" 时间为: "+new Date());
}
}
public void execute(JobExecutionContext context) throws JobExecutionException{
JobDataMap dataMap = context.getJobDetail().getJobDataMap();
String groupId = dataMap.getString("gourpId");
String sendContent = dataMap.getString("sendContent");
String tempId = dataMap.getString("tempId");
System.out.println("groupId为: "+groupId+" 发送内容为: "+sendContent+" 发送平台为:"+tempId+" 时间为: "+new Date());
}
}
阅读全文
0 0
- quartz 实现作业调度
- 使用quartz实现作业调度
- Jfinal+quartz实现作业调度
- Quartz.NET 实现作业调度
- 用Quartz实现作业调度
- Jfinal+quartz实现作业调度
- Quartz.NET实现作业调度
- 使用Quartz实现作业调度(一)
- 使用Quartz实现作业调度(二)
- Timer, Quartz 和 Spring 实现作业调度
- Timer, Quartz 和 Spring 实现作业调度
- Spring联姻Quartz实现作业调度
- Java使用quartz实现作业调度
- Spring+Quartz 实现自动作业调度
- Quartz进行作业调度
- Quartz作业调度
- 作业调度之quartz
- Quartz 作业调度
- 校验手机号正则表达式
- opengl官网
- C语言中的system函数
- 关于mysql数据库手机号替换*
- github访问太慢解决方案
- quartz 实现作业调度
- java base64流与图片的互转 针对inputStream.available()无效
- 梅特勒杯创新大赛(四):Android的相机使用与屏幕截图
- spring boot 和mybatis的xml使用
- 小程序学习——第一篇安装开发工具新建项目
- AngularJS基础 之 依赖注入的几种方法
- Java中实现短信发送
- 自定义View(有这些不怕你学不会)
- PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析