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就可以了. 199438.html

々上善若水々 2008-05-09 10:51 发表评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值