我的漫漫程序之旅

          專注于JavaWeb開發
          隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0
          數據加載中……

          Quartz高級部分JobStore

          JobStore是用來保存你的工作數據的.永遠不要在你的代碼中使用
          JobStore,它都是通過屬性文件來配置的.

          下面我們做一個RAMJobStore的 例子.

          建一個job:

          package com;

          import org.apache.commons.logging.Log;
          import org.apache.commons.logging.LogFactory;
          import org.quartz.Job;
          import org.quartz.JobExecutionContext;
          import org.quartz.JobExecutionException;

          public class PropJob implements Job
          {
              
          private static final Log log = LogFactory.getLog(PropJob.class);
              
              
              
          public void execute(JobExecutionContext context) throws JobExecutionException
              
          {
                  System.out.println(
          "begin:::::");
                  log.info(
          "job is begin:" + context.getTrigger().getName());
              }


          }

          測試類:

          package com;

          import java.util.Calendar;

          import org.quartz.JobDetail;
          import org.quartz.Scheduler;
          import org.quartz.SchedulerFactory;
          import org.quartz.SimpleTrigger;
          import org.quartz.impl.StdSchedulerFactory;

          public class PriorityDemo
          {
              
          public void run() throws Exception
              
          {
                  
          // 從屬性文件中讀取工程池信息
                  SchedulerFactory sf = new StdSchedulerFactory(
                          
          "src/com/quartz.properties");
                  Scheduler scheduler 
          = sf.getScheduler();
                  JobDetail job 
          = new JobDetail("propJob"null, PropJob.class);
                  Calendar startTime 
          = Calendar.getInstance();
                  
          // 在當前時間上加5秒
                  startTime.add(Calendar.SECOND, 5);
                  
          /**
                   * String name, String group, String jobName, String jobGroup, Date
                   * startTime, Date endTime, int repeatCount, long repeatInterval
                   
          */

                  
          // 每5秒一次
                  SimpleTrigger trigger1 = new SimpleTrigger("trigger1"null, startTime
                          .getTime(), 
          null15L * 1000L);
                  trigger1.setPriority(
          -5);
                  trigger1.setJobName(
          "propJob");
                  
          // 每10秒一次
                  SimpleTrigger trigger2 = new SimpleTrigger("trigger2"null, startTime
                          .getTime(), 
          null110L * 1000L);
                  trigger2.setJobName(
          "propJob");
                  
          // 每15秒一次
                  SimpleTrigger trigger3 = new SimpleTrigger("trigger3"null, startTime
                          .getTime(), 
          null115L * 1000L);
                  trigger3.setPriority(
          10);
                  trigger3.setJobName(
          "propJob");
                  
          // 安排工作計劃
                  scheduler.scheduleJob(job, trigger1);
                  scheduler.scheduleJob(trigger2);
                  scheduler.scheduleJob(trigger3);
                  
          // 任務開始
                  scheduler.start();
                  
          // 休息30秒
                  Thread.sleep(30L * 1000L);
                  
          // 關閉
                  scheduler.shutdown();
              }


              
          public static void main(String[] args)
              
          {
                  PriorityDemo priorityDemo 
          = new PriorityDemo();
                  
          try
                  
          {
                      priorityDemo.run();
                  }
           catch (Exception e)
                  
          {
                      e.printStackTrace();
                  }

              }


          }


          輸出結果:
          2008-5-9 10:45:13 org.quartz.core.SchedulerSignalerImpl <init>
          信息: Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
          2008-5-9 10:45:13 org.quartz.core.QuartzScheduler <init>
          信息: Quartz Scheduler v
          .1.6.1-RC1 created.
          2008-5-9 10:45:13 org.quartz.simpl.RAMJobStore initialize
          信息: RAMJobStore initialized.
          2008-5-9 10:45:13 org.quartz.impl.StdSchedulerFactory instantiate
          信息: Quartz scheduler 'PriorityDemoScheduler' initialized from the specified file : 'src/com/quartz.properties'
          2008-5-9 10:45:13 org.quartz.impl.StdSchedulerFactory instantiate
          信息: Quartz scheduler version: 
          1.6.1-RC1
          2008-5-9 10:45:13 org.quartz.core.QuartzScheduler start
          信息: Scheduler PriorityDemoScheduler_$_NON_CLUSTERED started.
          2008-5-9 10:45:18 com.PropJob execute
          信息: job is begin:trigger3
          2008-5-9 10:45:18 com.PropJob execute
          信息: job is begin:trigger2
          2008-5-9 10:45:18 com.PropJob execute
          信息: job is begin:trigger1
          begin:::::
          begin:::::
          begin:::::
          2008-5-9 10:45:23 com.PropJob execute
          信息: job is begin:trigger1
          begin:::::
          2008-5-9 10:45:28 com.PropJob execute
          信息: job is begin:trigger2
          begin:::::
          begin:::::
          2008-5-9 10:45:33 com.PropJob execute
          信息: job is begin:trigger3
          2008-5-9 10:45:43 org.quartz.core.QuartzScheduler shutdown
          信息: Scheduler PriorityDemoScheduler_$_NON_CLUSTERED shutting down.
          2008-5-9 10:45:43 org.quartz.core.QuartzScheduler standby
          信息: Scheduler PriorityDemoScheduler_$_NON_CLUSTERED paused.
          2008-5-9 10:45:43 org.quartz.core.QuartzScheduler shutdown
          信息: Scheduler PriorityDemoScheduler_$_NON_CLUSTERED shutdown complete.


          我們的屬性文件已經被正確讀取.
          有人可能會對
          org.quartz.scheduler.instanceName=PriorityExampleScheduler
          產生疑問,PriorityDemoScheduler這個類是不存在的,
          其實你只要在你的job類后面加上Scheduler就可以了.

          posted on 2008-05-09 10:51 々上善若水々 閱讀(3221) 評論(0)  編輯  收藏 所屬分類: opensource

          主站蜘蛛池模板: 苍南县| 恭城| 临汾市| 南溪县| 化州市| 武城县| 缙云县| 永平县| 怀仁县| 喀喇沁旗| 萍乡市| 长泰县| 惠安县| 通化市| 塘沽区| 宝清县| 临江市| 塔城市| 永兴县| 土默特左旗| 紫金县| 友谊县| 韩城市| 萝北县| 定安县| 东丽区| 昌乐县| 晴隆县| 怀柔区| 江阴市| 鹤峰县| 水城县| 林芝县| 武川县| 抚远县| 锡林郭勒盟| 安溪县| 凌源市| 临泉县| 勃利县| 怀来县|