侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

quartz学习笔记1

2023-11-18 星期六 / 0 评论 / 0 点赞 / 41 阅读 / 8790 字

添加pom.xml <!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz-jobs --><dependency><g

 

添加pom.xml

		<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz-jobs -->		<dependency>			<groupId>org.quartz-scheduler</groupId>			<artifactId>quartz-jobs</artifactId>			<version>2.2.3</version>		</dependency>		<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->		<dependency>			<groupId>org.quartz-scheduler</groupId>			<artifactId>quartz</artifactId>			<version>2.2.3</version>		</dependency>		<!-- commons-logging -->		<dependency>			<groupId>commons-logging</groupId>			<artifactId>commons-logging</artifactId>			<version>1.2</version>		</dependency>

建立任务类:

package com.test.quartz.jobs;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 HelloJob implements Job{	private static Log log = LogFactory.getLog(HelloJob.class);	@Override	public void execute(JobExecutionContext context) throws JobExecutionException {		log.info("This is HelloJob类的任务,在execute这个方法中。。。");		log.info("do it ......");		log.info("任务做完!");	}}

使用simpleTrigger做的测试类

package com.test.quartz;import org.quartz.JobBuilder;import org.quartz.JobDetail;import org.quartz.Scheduler;import org.quartz.SchedulerException;import org.quartz.SimpleScheduleBuilder;import org.quartz.Trigger;import org.quartz.TriggerBuilder;import org.quartz.impl.StdSchedulerFactory;import com.test.quartz.jobs.HelloJob;public class SimpleTriggerTest {	public static void main(String[] args) throws SchedulerException {		JobDetail jobDetail = JobBuilder.newJob(HelloJob.class).withIdentity("jobsName1", "jobsGroup1").build();		Trigger trigger = TriggerBuilder.newTrigger().withIdentity("triggerName", "triggerGroup1").withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(5).repeatForever()).build();		Scheduler scheduler = new StdSchedulerFactory().getScheduler();		scheduler.start();		scheduler.scheduleJob(jobDetail, trigger);	}}

这就是quartz使用simpletrigger的基本使用。

quartz除了simpletrigger还有crontrigger这种方式,使用如下:

package com.test.quartz;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.quartz.CronScheduleBuilder;import org.quartz.JobBuilder;import org.quartz.JobDetail;import org.quartz.Scheduler;import org.quartz.Trigger;import org.quartz.TriggerBuilder;import org.quartz.impl.StdSchedulerFactory;import com.test.quartz.jobs.HelloJob;import com.test.quartz.listener.HelloJobListener;public class CronTriggerTest {	private static Log log = LogFactory.getLog(CronTriggerTest.class);		public static void main(String[] args) throws Exception {			JobDetail jobDetail = JobBuilder.newJob(HelloJob.class).withIdentity("jobsName1", "jobsGroup1").build();		Trigger trigger = TriggerBuilder.newTrigger().withIdentity("triggerName", "triggerGroup1").withSchedule(CronScheduleBuilder.cronSchedule("0/1 * * * * ?")).build();		Scheduler scheduler = new StdSchedulerFactory().getScheduler();		//scheduler.getListenerManager().addJobListener(new HelloJobListener());        // 这里是添加listener的,有jobListener还有triggerListener还有schedulerListener其作用如他们一名称一样		scheduler.start();		scheduler.scheduleJob(jobDetail, trigger);	}}

使用quartz的Listener,quartz的listener分为jobListener,tirggerListener和schedulerListener。

这里来个jobListener的例子:

package com.test.quartz.listener;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;import org.quartz.JobListener;public class HelloJobListener implements JobListener {		private static Log log = LogFactory.getLog(HelloJobListener.class);	@Override	public String getName() {		// TODO Auto-generated method stub		return "HelloJobListener";	}	@Override	public void jobToBeExecuted(JobExecutionContext context) {		String jobName = context.getJobDetail().getKey().toString();		log.info("jobToBeExecuted");		log.info("Job : " + jobName + " is going to start...");			}	@Override	public void jobExecutionVetoed(JobExecutionContext context) {		log.info("jobExecutionVetoed");	}	@Override	public void jobWasExecuted(JobExecutionContext context, JobExecutionException jobException) {		log.info("jobWasExecuted");		 		String jobName = context.getJobDetail().getKey().toString();		log.info("Job : " + jobName + " is finished..."); 		if (!jobException.getMessage().equals("")) {			log.info("Exception thrown by: " + jobName + " Exception: " + jobException.getMessage());		}			}}

分别是任务之前,任务完成后,和任务取消完成的方法。

 

多任务

一个Trigger只能对应一个JobDetail(具体的任务)

package com.test.quartz.jobs;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 JobA implements Job {		private static Log log = LogFactory.getLog(JobA.class);	@Override	public void execute(JobExecutionContext context) throws JobExecutionException {		log.info("JobA doit ......");	}}
package com.test.quartz.jobs;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 JobB implements Job {		private static Log log = LogFactory.getLog(JobB.class);	@Override	public void execute(JobExecutionContext context) throws JobExecutionException {		log.info("JobB doit ......");	}}
package com.test.quartz.jobs;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 JobC implements Job {		private static Log log = LogFactory.getLog(JobC.class);	@Override	public void execute(JobExecutionContext context) throws JobExecutionException {		log.info("JobC doit ......");	}}

 

多任务的测试类:

package com.test.quartz;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.quartz.CronScheduleBuilder;import org.quartz.JobBuilder;import org.quartz.JobDetail;import org.quartz.JobKey;import org.quartz.Scheduler;import org.quartz.Trigger;import org.quartz.TriggerBuilder;import org.quartz.impl.StdSchedulerFactory;import com.test.quartz.jobs.JobA;import com.test.quartz.jobs.JobB;import com.test.quartz.jobs.JobC;public class CronTriggerExample {		private static Log log = LogFactory.getLog(CronTriggerExample.class);		public static void main(String[] args) throws Exception {				JobKey jobKeyA = new JobKey("jobA", "group1");		JobDetail jobA = JobBuilder.newJob(JobA.class).withIdentity(jobKeyA).build();     	JobKey jobKeyB = new JobKey("jobB", "group1");    	JobDetail jobB = JobBuilder.newJob(JobB.class).withIdentity(jobKeyB).build();     	JobKey jobKeyC = new JobKey("jobC", "group1");    	JobDetail jobC = JobBuilder.newJob(JobC.class).withIdentity(jobKeyC).build();    	    	    	Trigger trigger1 = TriggerBuilder.newTrigger().withIdentity("dummyTriggerName1", "group1").withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ?")).build();    	Trigger trigger2 = TriggerBuilder.newTrigger().withIdentity("dummyTriggerName2", "group1").withSchedule(CronScheduleBuilder.cronSchedule("0/2 * * * * ?")).build();     	Trigger trigger3 = TriggerBuilder.newTrigger().withIdentity("dummyTriggerName3", "group1").withSchedule(CronScheduleBuilder.cronSchedule("0/3 * * * * ?")).build();    	     	Scheduler scheduler = new StdSchedulerFactory().getScheduler();    	scheduler.start();    	    	scheduler.scheduleJob(jobA, trigger1);    	scheduler.scheduleJob(jobB, trigger2);    	scheduler.scheduleJob(jobC, trigger3);			}}

 

来点总结:

 

 

 

 

 

 

 

 

 

 

广告 广告

评论区