Quartz 介绍(单独使用)

Quartz 介绍(单独使用)

Quartz是一个java调度框架,主要由三部分组成:
1. Job。这是具体的一个job,需要实现Job接口的execute方法
2. Trigger。这个trigger是用来定义调度方式,一个trigger只能对应一个Job
3. Schedule,总调度进程。由它进行管理调度。

Simple Example:

SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();

JobDetail job = newJob(HelloJob.class).withIdentity("job1", "group1").build();

// Trigger the job to run on the next round minute
Trigger trigger = newTrigger().withIdentity("trigger1", "group1").startAt(runTime).build();

// Tell quartz to schedule the job using our trigger
sched.scheduleJob(job, trigger);

sched.start();//启动调动

还可以使用配置来进行调度。那么需要在获取指定一个properties文件和定义job的xml。

具体如下:

quartz.properties

org.quartz.scheduler.instanceName = MyScheduler
org.quartz.threadPool.threadCount = 3
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin
org.quartz.plugin.jobInitializer.fileNames = config/quartz-config.xml
org.quartz.plugin.jobInitializer.failOnFileNotFound = true

quartz-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<job-scheduling-data
    xmlns="http://www.quartz-scheduler.org/xml/JobSchedulingData"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.quartz-scheduler.org/xml/JobSchedulingData
        http://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd"
    version="1.8">

    <schedule>
        <job>
            <name>MineWarnJob</name>
            <group>WeatherReport</group>
            <description>This is a weather Job of mine!</description>
            <job-class>com.sut.main.tools.job.MineWarnJob</job-class>
        </job>

        <trigger>
            <cron>
                <name>MineWeatherTrigger</name>
                <group>WeatherTrigger</group>
                <job-name>MineWarnJob</job-name>
                <job-group>WeatherReport</job-group>
                <!-- everyday American Time 18 , Beijing 6 o'clock -->
                <cron-expression>00 00 18 ? * MON-FRI</cron-expression>
            </cron>
        </trigger>
    </schedule>
</job-scheduling-data>

Main class。(关键是指定properties给schedulerFactory)

Properties props = new Properties();
        props.load(WeatherReport.class.getClassLoader().getResourceAsStream("config/quartz.properties"));
String value = props.getProperty("org.quartz.threadPool.threadCount");
if(value == null || value.equals("")){
    log.info("获取propeties为空!");
    return;
}

//First we must get a reference to a scheduler
SchedulerFactory sf = new StdSchedulerFactory(props);
Scheduler sched = null;
...
//这里就可以直接start了,会自动加载xml中定义的job
sched = sf.getScheduler();
sched.start();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值