我的漫漫程序之旅

专注于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 々上善若水々 阅读(3182) 评论(0)  编辑  收藏 所属分类: opensource


只有注册用户登录后才能发表评论。


网站导航: