quartz实现作业调度

xiaoxiao2021-02-28  71

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());       }   } 
转载请注明原文地址: https://www.6miu.com/read-84627.html

最新回复(0)