Commit f7843771 by fengshuonan

完善定时任务demo

parent 38f9de5f
......@@ -167,6 +167,12 @@
<version>4.0.0</version>
</dependency>
<!--quartz定时任务-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
<!--需要分布式session的话需要放开注释-->
<!--<dependency>-->
<!--<groupId>org.springframework.session</groupId>-->
......
package cn.stylefeng.guns.config;
import cn.stylefeng.guns.core.schedue.SpringTasks;
import cn.stylefeng.guns.core.schedue.quartz.StartQuartzExample;
import cn.stylefeng.guns.core.schedue.spring.SpringTasks;
import org.quartz.Scheduler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
/**
* 定时任务自动配置
......@@ -23,4 +26,27 @@ public class SchedulingConfig {
public SpringTasks scheduledTasks() {
return new SpringTasks();
}
/**
* quartz方式,配置Scheduler实例
*
* @author fengshuonan
* @Date 2019/2/24 19:03
*/
@Bean
public Scheduler scheduler(SchedulerFactoryBean schedulerFactoryBean) {
return schedulerFactoryBean.getScheduler();
}
/**
* 启动quartz的示例
*
* @author fengshuonan
* @Date 2019/3/27 3:34 PM
*/
@Bean
public StartQuartzExample startQuartzExample() {
return new StartQuartzExample();
}
}
package cn.stylefeng.guns.core.schedue.quartz;
import org.quartz.JobExecutionContext;
import org.springframework.scheduling.quartz.QuartzJobBean;
/**
* quartz的执行示例
*
* @author fengshuonan
* @Date 2019/2/24 16:55
*/
public class SampleQuartzJob extends QuartzJobBean {
@Override
protected void executeInternal(JobExecutionContext context) {
System.err.println("<<<<<调试信息,注释掉SchedulingConfig类中的内容来关闭这个定时任务!>>>>> quartz task执行 >>>>> quartz执行了!");
}
}
\ No newline at end of file
package cn.stylefeng.guns.core.schedue.quartz;
import org.quartz.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
/**
* quartz的启动示例
*
* @author fengshuonan
* @Date 2019/2/24 16:55
*/
public class StartQuartzExample implements CommandLineRunner {
@Autowired
private Scheduler scheduler;
@Override
public void run(String... args) throws Exception {
// 启动调度器
scheduler.start();
//构建job信息
JobDetail jobDetail = JobBuilder.newJob(SampleQuartzJob.class).withIdentity(SampleQuartzJob.class.getName(), "aaa").build();
//表达式调度构建器(即任务执行的时间)
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("*/5 * * * * ?");
//按新的cronExpression表达式构建一个新的trigger
CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(SampleQuartzJob.class.getName(), "aaa")
.withSchedule(scheduleBuilder).build();
try {
scheduler.scheduleJob(jobDetail, trigger);
} catch (SchedulerException e) {
System.out.println("创建定时任务失败" + e);
throw new Exception("创建定时任务失败");
}
}
}
\ No newline at end of file
package cn.stylefeng.guns.core.schedue;
package cn.stylefeng.guns.core.schedue.spring;
import org.springframework.scheduling.annotation.Scheduled;
......@@ -18,7 +18,7 @@ public class SpringTasks {
*/
@Scheduled(fixedRate = 5000)
public void beginAfter() {
System.err.println("<<<<<调试信息,注释掉SchedulingConfig类中的内容来关闭这个定时任务!>>>>>开始之后5秒执行!");
System.err.println("<<<<<调试信息,注释掉SchedulingConfig类中的内容来关闭这个定时任务!>>>>> spring task执行 >>>>>开始之后5秒执行!");
}
/**
......@@ -29,7 +29,7 @@ public class SpringTasks {
*/
@Scheduled(fixedDelay = 5000)
public void finishAfter() {
System.err.println("<<<<<调试信息,注释掉SchedulingConfig类中的内容来关闭这个定时任务!>>>>>执行之后5秒才执行!");
System.err.println("<<<<<调试信息,注释掉SchedulingConfig类中的内容来关闭这个定时任务!>>>>> spring task执行 >>>>>执行之后5秒才执行!");
}
/**
......@@ -40,7 +40,7 @@ public class SpringTasks {
*/
@Scheduled(initialDelay = 1000, fixedRate = 5000)
public void stepAdd() {
System.err.println("<<<<<调试信息,注释掉SchedulingConfig类中的内容来关闭这个定时任务!>>>>>第一次延迟1秒后执行,之后按fixedRate的规则每5秒执行一次!");
System.err.println("<<<<<调试信息,注释掉SchedulingConfig类中的内容来关闭这个定时任务!>>>>> spring task执行 >>>>>第一次延迟1秒后执行,之后按fixedRate的规则每5秒执行一次!");
}
/**
......@@ -51,6 +51,6 @@ public class SpringTasks {
*/
@Scheduled(cron = "*/10 * * * * *")
public void cron() {
System.err.println("<<<<<调试信息,注释掉SchedulingConfig类中的内容来关闭这个定时任务!>>>>>每隔10秒执行一次!");
System.err.println("<<<<<调试信息,注释掉SchedulingConfig类中的内容来关闭这个定时任务!>>>>> spring task执行 >>>>>每隔10秒执行一次!");
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment