quartz简单demo

2 篇文章 0 订阅

1.首先创建一个java项目

2.导入quartz-all-1.8.4.jar包

3.写quartz的配置文件

# \u914D\u7F6E\u4E3B\u8C03\u5EA6\u5668\u5C5E\u6027
org.quartz.scheduler.instanceName=QuartzScheduler
org.quartz.scheduler.instanceId=AUTO
# \u914D\u7F6E\u7EBF\u7A0B\u6C60
# Quartz\u7EBF\u7A0B\u6C60\u7684\u5B9E\u73B0\u7C7B
org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
# \u7EBF\u7A0B\u6C60\u7684\u7EBF\u7A0B\u6570\u91CF
org.quartz.threadPool.threadCount=3
# \u7EBF\u7A0B\u6C60\u91CC\u7EBF\u7A0B\u7684\u4F18\u5148\u7EA7
org.quartz.threadPool.threadPriority=6
# \u914D\u7F6E\u4F5C\u4E1A\u5B58\u50A8
org.quartz.jobStore.misfireThreshold=60000
org.quartz.jobStore.class=org.quartz.simpl.RAMJobStore

4.写一个类SimpleQuartzJob并且实现job接口代码如下:

package demo;

import java.util.Date;

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

public class SimpleQuartzJob implements Job {

    public SimpleQuartzJob() {
    }

    public void execute(JobExecutionContext context) throws JobExecutionException {
        System.out.println("In SimpleQuartzJob - executing its JOB at " + new Date() + " by " + context.getTrigger().getName());//此处是要执行的内容
    }
}
5.接下来就是关键代码首先创建一个类(CronTriggerRunner)写一个task方法代码如下:(cron表达式) cron表达式参考

package demo;

import org.quartz.CronExpression;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;

public class CronTriggerRunner {
	
	public void task() throws SchedulerException {
		// Initiate a Schedule Factory
		SchedulerFactory schedulerFactory = new StdSchedulerFactory();
		// Retrieve a scheduler from schedule factory
		Scheduler scheduler = schedulerFactory.getScheduler();

		// Initiate JobDetail with job name, job group, and executable job class
		JobDetail jobDetail = new JobDetail("jobDetail2", "jobDetailGroup2",SimpleQuartzJob.class);
		// Initiate CronTrigger with its name and group name
		CronTrigger cronTrigger = new CronTrigger("cronTrigger","triggerGroup2");
		try {
			// setup CronExpression
			CronExpression cexp = new CronExpression("0/5 * * * * ?");//每5秒执行一次
			// Assign the CronExpression to CronTrigger
			cronTrigger.setCronExpression(cexp);
		} catch (Exception e) {
			e.printStackTrace();
		}
		// schedule a job with JobDetail and Trigger
		scheduler.scheduleJob(jobDetail, cronTrigger);

		// start the scheduler
		scheduler.start();
	}
}
6.最后一步就是写测试代码,代码如下:

package demo;

import org.quartz.SchedulerException;

public class Test {
	public static void main(String[] args) {
		CronTriggerRunner cr = new CronTriggerRunner();
		SimpleTriggerRunner sr = new SimpleTriggerRunner();
		try {
			cr.task();
			sr.task();
		} catch (SchedulerException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

另外测试类有一个类SimpleTriggerRunner是另一种实现版本,代码如下:

package demo;

import java.util.Date;

import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.impl.StdSchedulerFactory;

public class SimpleTriggerRunner {

	public void task() throws SchedulerException {
		// Initiate a Schedule Factory
		SchedulerFactory schedulerFactory = new StdSchedulerFactory();
		// Retrieve a scheduler from schedule factory
		Scheduler scheduler = schedulerFactory.getScheduler();

		// current time
		long ctime = System.currentTimeMillis();

		// Initiate JobDetail with job name, job group, and executable job class
		JobDetail jobDetail = new JobDetail("jobDetail-s1","jobDetailGroup-s1", SimpleQuartzJob.class);
		// Initiate SimpleTrigger with its name and group name
		SimpleTrigger simpleTrigger = new SimpleTrigger("simpleTrigger",
				"triggerGroup-s1");
		// set its start up time
		simpleTrigger.setStartTime(new Date(ctime));
		// set the interval, how often the job should run (10 seconds here)
		simpleTrigger.setRepeatInterval(10000);//10秒一次
		// set the number of execution of this job, set to 10 times.
		// It will run 10 time and exhaust.
		simpleTrigger.setRepeatCount(100);
		// set the ending time of this job.
		// We set it for 60 seconds from its startup time here
		// Even if we set its repeat count to 10,
		// this will stop its process after 6 repeats as it gets it endtime by
		// then.
		// simpleTrigger.setEndTime(new Date(ctime + 60000L));
		// set priority of trigger. If not set, the default is 5
		// simpleTrigger.setPriority(10);
		// schedule a job with JobDetail and Trigger
		scheduler.scheduleJob(jobDetail, simpleTrigger);

		// start the scheduler
		scheduler.start();
	}
}





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以回答这个问题。以下是一个简单的 Spring Boot 整合 Quartzdemo: 1. 首先,在 pom.xml 文件中添加以下依赖: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency> ``` 2. 创建一个 Quartz 配置,例如: ``` @Configuration public class QuartzConfig { @Autowired private ApplicationContext applicationContext; @Bean public SchedulerFactoryBean schedulerFactoryBean() { SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean(); schedulerFactoryBean.setApplicationContext(applicationContext); schedulerFactoryBean.setJobFactory(springBeanJobFactory()); return schedulerFactoryBean; } @Bean public SpringBeanJobFactory springBeanJobFactory() { return new SpringBeanJobFactory(); } } ``` 3. 创建一个 Quartz Job ,例如: ``` @Component public class MyJob implements Job { @Override public void execute(JobExecutionContext context) throws JobExecutionException { // 在这里编写具体的任务逻辑 } } ``` 4. 在 application.properties 文件中配置 Quartz 相关属性,例如: ``` spring.quartz.job-store-type=jdbc spring.quartz.jdbc.initialize-schema=always ``` 5. 在需要调度任务的地方注入 Scheduler 对象,例如: ``` @Autowired private Scheduler scheduler; // 创建一个触发器 Trigger trigger = TriggerBuilder.newTrigger() .withIdentity("myTrigger", "myGroup") .withSchedule(CronScheduleBuilder.cronSchedule(" /1 * * * ?")) .build(); // 创建一个任务 JobDetail jobDetail = JobBuilder.newJob(MyJob.class) .withIdentity("myJob", "myGroup") .build(); // 将任务和触发器绑定到调度器上 scheduler.scheduleJob(jobDetail, trigger); ``` 以上就是一个简单的 Spring Boot 整合 Quartzdemo。希望能对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值