Quartz 的簡單使用(不使用任何框架)

1. 引入maven需要的包

		<dependency>
			<groupId>org.quartz-scheduler</groupId>
			<artifactId>quartz</artifactId>
			<version>2.2.1</version>
		</dependency>
		<dependency>
			<groupId>org.quartz-scheduler</groupId>
			<artifactId>quartz-jobs</artifactId>
			<version>2.2.1</version>
		</dependency>

2. 創建配置文件

quartz.properties

org.quartz.scheduler.instanceName = MyScheduler
org.quartz.threadPool.threadCount = 3
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore

job-setting.properties(自己添加的,不想用的話,可以不用)

#指定任務的週期【按每分鐘:60】【按每小時:3600】【按每天(24小時):86400】
run_cycle=20
#任務每次執行條數
frozen_process_num=2

3. 創建任務調度文件



import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.TriggerBuilder.newTrigger;

import java.util.ResourceBundle;

import org.quartz.*; 
import org.quartz.impl.StdSchedulerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Class Description
 *
 * @author Luxiaoshuai
 * @version
 * @date 2015年8月25日 下午1:46:42
 * @since 
 */
public class QuartzApp {
    private final static ResourceBundle  RESOURCE = ResourceBundle.getBundle("job-setting");
    private static final Logger logger = LoggerFactory.getLogger(QuartzApp.class);
    
    /**
     * @param args
     */
    public static void main(String[] args) {
        logger.info("--定時任務已經開始運行【運行間隔週期:"+RESOURCE.getString("run_cycle")+"秒】--");
        System.out.println("--定時任務已經開始運行【運行週期:"+RESOURCE.getString("run_cycle")+"秒】--");
        try {
            // 獲取作業調度
            Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

            // 作業調度開始
            scheduler.start();

            // 取得詳細的任務
            JobDetail job = newJob(myQuartzJob.class).withIdentity("job1", "group1").build();

            // 觸發器來控制執行的週期
            Trigger trigger = newTrigger()
                .withIdentity("trigger1", "group1")
                .startNow()
                .withSchedule(simpleSchedule()
                        .withIntervalInSeconds(Integer.parseInt(RESOURCE.getString("run_cycle")))//重複間隔
                        .repeatForever())//重複次數(永遠重複)【withRepeatCount(10)) 可以指定重複次數】
                .build();

            // 添加觸發器到任務調度
            scheduler.scheduleJob(job, trigger);

            // 調度關閉(永遠不關閉)
            //scheduler.shutdown();

        } catch (SchedulerException se) {
            se.printStackTrace();
        }
    }

}

4. 創建任務



import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

/**
 * Class Description
 *
 * @author Luxiaoshuai
 * @version
 * @date 2015年8月27日 上午9:53:06
 * @since 
 */
public class myQuartzJob implements Job {

    /**
     *
     * @param paramJobExecutionContext
     * @throws JobExecutionException
     */
    @Override
    public void execute(JobExecutionContext paramJobExecutionContext)
            throws JobExecutionException {
        System.out.println("------myQuartzJob----");
        
    }

}

5. 執行QuartzApp就可以咯!(下面是執行結果)

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
--定時任務已經開始運行【運行週期:2秒】--
------myQuartzJob----
------myQuartzJob----
------myQuartzJob----




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章