quartz timer task realization of demo

A. Create a maven project, the introduction of the jar package

<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.25</version>
<scope>compile</scope>
</dependency>

II. XxxJob write a class that implements the Job interface, and which way to achieve,

package com.cy;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class RamJob implements Job{

	private static Logger _log = LoggerFactory.getLogger(RamJob.class);
	
	private static BankServiceImpl bsImpl = new BankServiceImpl();
	
	@Override
	public void execute(JobExecutionContext context) throws JobExecutionException {
		_log.info("开始处理申请贷款业务");
		bsImpl.doApplyLoan();
		_log.info("申请贷款业务处理完成");
	}
	

}

Add a class service processing, analog processing operations

package com.cy;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class BankServiceImpl {

	private static Logger _log = LoggerFactory.getLogger(BankServiceImpl.class);
	
	public void doLoan(){
		System.out.println("银行开始放款");
		_log.info("银行开始放款");
	}
	
	public void doTransfer(){
		System.out.println("借款人A转帐1000给借款人B");
		_log.info("借款人A转帐1000给借款人B");
	}
	
	public void doApplyLoan(){
		System.out.println("申请人申请贷款");
		_log.info("申请人申请贷款");
	}
}

 

III. Processing tasks

package com.cy;

import java.util.Date;

import org.quartz.CronScheduleBuilder;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class RamQuartz {

	private static Logger _Logger = LoggerFactory.getLogger(RamQuartz.class);
	
	//设置任务启动时间
	static long applyLoanTime = System.currentTimeMillis() + 10*1000L;
	static long transferTime = System.currentTimeMillis() + 20*1000L;
	static long loanTime = System.currentTimeMillis() + 30*1000L;
	
	public static void main(String[] args) throws SchedulerException {
		//1.创建调度器工厂
		SchedulerFactory sFactory = new StdSchedulerFactory();
		//2.由调度器工厂创建调度器
		Scheduler scheduler = sFactory.getScheduler();
		//3.创建jobDetail对象
		JobDetail applyJD = JobBuilder.newJob(RamJob.class)
				.withDescription("this is applyLoan task")
				.withIdentity("ramJob", "ramJobGroup").build();
		JobDetail transferJD = JobBuilder.newJob(RamJob2.class)
				.withDescription("this is transfer task")
				.withIdentity("ramJob2", "ramJob2Group").build();
		JobDetail loanJD = JobBuilder.newJob(RamJob3.class)
				.withDescription("this is loan task")
				.withIdentity("ramJob3", "ramJob3Group").build();
		//设置启动时间
		Date applyStartTime = new Date(applyLoanTime);
		Date transferStartTime = new Date(transferTime);
		Date loanStartTime = new Date(loanTime);
		
		//4.创建触发器对象
		Trigger t1 = TriggerBuilder.newTrigger()
				.withDescription("")
				.withIdentity("ramJobTrigger", "ramJobTriggerGroup")
				.startAt(applyStartTime)
				.withSchedule(CronScheduleBuilder.cronSchedule("0/1 * * * * ?")).build();
		Trigger t2 = TriggerBuilder.newTrigger()
				.withDescription("")
				.withIdentity("ramJob2Trigger", "ramJob2TriggerGroup")
				.startAt(transferStartTime)
				.withSchedule(CronScheduleBuilder.cronSchedule("0/1 * * * * ?")).build();
		Trigger t3 = TriggerBuilder.newTrigger()
				.withDescription("")
				.withIdentity("ramJob3Trigger", "ramJob3TriggerGroup")
				.startAt(loanStartTime)
				.withSchedule(CronScheduleBuilder.cronSchedule("0/1 * * * * ?")).build();
		
		//5.调度器注册
		scheduler.scheduleJob(applyJD, t1);
		scheduler.scheduleJob(transferJD, t2);
		scheduler.scheduleJob(loanJD, t3);
		
		//6.调度器执行
		scheduler.start();
		_Logger.info("开始执行调度器");
	}
}

Summary: direct use of quartz, write directly to a xxxjob achieve job class, and then perform six steps to achieve:

(1) Create Dispatcher Factory ScheduleFactory sf = new stdScheduleFactory ()

(2) retrieval schedule instance Scheduler s = sf.getScheduler ()

(3)创建jobDetail对象 JobDetail jd = JobBuilder.newJob(RAMJob.class)
                .withDescription("this is a ram job")
                .withIdentity("ramJob", "ramGroup").build();;

(4) create a trigger object t = TriggerBuilder.newTrigger the Trigger ()
        .withDescription ( "")
        .withIdentity ( "ramTrigger", "ramTriggerGroup")
        .startAt (startTime)
        .withSchedule (CronScheduleBuilder.cronSchedule ( "0/2 * * ? * * ")) // two seconds to perform a
        .build ();

(5) The scheduler triggers registration and jobDetail s.scheduleJob (jd, t);

(6) scheduler performs s.start ();

Released eight original articles · won praise 0 · Views 101

Guess you like

Origin blog.csdn.net/weixin_45146962/article/details/104362604