From 8199c6fe6ec737fa92e059adfe39ecb040386174 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=87=95=E9=B9=8F?= Date: Wed, 23 Dec 2020 17:45:40 +0800 Subject: [PATCH] =?UTF-8?q?cron=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/aiprose/sbquartz/quartz/CronJob.java | 30 +++++++++++++++ .../sbquartz/quartz/CronScheduler.java | 37 +++++++++++++++++++ .../sbquartz/quartz/DemoScheduler.java | 2 + 3 files changed, 69 insertions(+) create mode 100644 src/main/java/com/aiprose/sbquartz/quartz/CronJob.java create mode 100644 src/main/java/com/aiprose/sbquartz/quartz/CronScheduler.java diff --git a/src/main/java/com/aiprose/sbquartz/quartz/CronJob.java b/src/main/java/com/aiprose/sbquartz/quartz/CronJob.java new file mode 100644 index 0000000..9a5c7e3 --- /dev/null +++ b/src/main/java/com/aiprose/sbquartz/quartz/CronJob.java @@ -0,0 +1,30 @@ +package com.aiprose.sbquartz.quartz; + +import lombok.extern.slf4j.Slf4j; +import org.quartz.*; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * @author yanpeng + * @version 1.0 + * @desc 具体实现业务逻辑 + * @company 北京中经网软件有限公司 + * @date 2020/12/23 16:02 + */ +//这两个是在分布式环境中使用的 +//@PersistJobDataAfterExecution +//@DisallowConcurrentExecution +@Component +@Slf4j +public class CronJob implements Job { + @Override + public void execute(JobExecutionContext context) throws JobExecutionException { + JobKey key = context.getJobDetail().getKey(); + log.info("task name: {}",key.getName()); + JobDataMap jobDataMap = context.getTrigger().getJobDataMap(); + log.info("传递的参数:name:{}",jobDataMap.get("name")); + log.info("我要开始做具体的工作了,{}",new Date()); + } +} diff --git a/src/main/java/com/aiprose/sbquartz/quartz/CronScheduler.java b/src/main/java/com/aiprose/sbquartz/quartz/CronScheduler.java new file mode 100644 index 0000000..7fcc711 --- /dev/null +++ b/src/main/java/com/aiprose/sbquartz/quartz/CronScheduler.java @@ -0,0 +1,37 @@ +package com.aiprose.sbquartz.quartz; + +import lombok.extern.slf4j.Slf4j; +import org.quartz.*; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; + +/** + * @author yanpeng + * @version 1.0 + * @desc TODO + * @company 北京中经网软件有限公司 + * @date 2020/12/23 16:50 + */ +@Component +@Slf4j +public class CronScheduler { + @Resource + private Scheduler scheduler; + + @PostConstruct + public void init() throws SchedulerException { + startTaskJob(); + scheduler.start(); + } + + private void startTaskJob() throws SchedulerException { + JobDetail jobDetail = JobBuilder.newJob(CronJob.class) .withIdentity("job1", "group1").build(); + // 6的倍数秒执行 也就是 6 12 18 24 30 36 42 .... + CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0/6 * * * * ?"); + CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1") + .usingJobData("name","nelson").withSchedule(scheduleBuilder).build(); + scheduler.scheduleJob(jobDetail,cronTrigger); + } +} diff --git a/src/main/java/com/aiprose/sbquartz/quartz/DemoScheduler.java b/src/main/java/com/aiprose/sbquartz/quartz/DemoScheduler.java index d2ca742..b69dd3d 100644 --- a/src/main/java/com/aiprose/sbquartz/quartz/DemoScheduler.java +++ b/src/main/java/com/aiprose/sbquartz/quartz/DemoScheduler.java @@ -36,6 +36,8 @@ public class DemoScheduler { Date nowTime = new Date(); nowTime.setTime(nowTime.getTime() + 5000l); Trigger subsys = TriggerBuilder.newTrigger().withIdentity(uuid).startAt(nowTime).build(); + //2分钟循环一次 + //Trigger subsys = TriggerBuilder.newTrigger().withIdentity(uuid).startAt(nowTime).withSchedule(SimpleScheduleBuilder.repeatHourlyForever().withIntervalInSeconds(2)).build(); scheduler.scheduleJob(jobDetail, subsys); } }