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();  
    }  



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());  
    }  






原创粉丝点击