SpringBoot实现定时任务和异步调用实现定时任务和异步调用
主要为大家详细介绍了SpringBoot实现定时任务和异步调用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了SpringBoot实现定时任务和异步调用的具体代码,供大家参考,具体内容如下
环境:环境:
jdk1.8;spring boot2.0.2;Maven3.3
摘要说明:摘要说明:
定时任务:定时任务是业务场景中经常出现的一种情况如:定时发送邮件,短信、定时统计监控数据、定时对账等
异步调用:一个都买流程可能包括下单、发货通知、短信推送、消息推送等,其实除了下单这个主要程序是主程序,其他子程序可以同时进行且不影响主程序的运行,
这个时候就可以使用异步调用来调用这些子程序;
步骤:步骤:
1.定时任务定时任务
a.在spring boot主类上使用注解@EnableScheduling启动定时任务:
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
//启动定时任务
@EnableScheduling
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
b.实现定时任务(使用@Component注解来标注组件)
/**
* @模块名:demo
* @包名:com.example.demo.test1.component
* @描述:SchedulingComponent.java
* @版本:1.0
* @创建人:cc
* @创建时间:2018年9月29日上午10:19:37
*/
package com.example.demo.test1.component;
import java.util.Date;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
/**
* @模块名:demo
* @包名:com.example.demo.test1.component @类名称: SchedulingComponent
* @类描述:【类描述】用于测试定时任务 @版本:1.0
* @创建人:cc
* @创建时间:2018年9月29日上午10:19:37
*/
@Component
public class SchedulingComponent {
/**
*
* @方法名:testScheduling1
* @方法描述【方法功能描述】测试定时任务,没三秒执行一次
* @修改描述【修改描述】
* @版本:1.0
* @创建人:cc
* @创建时间:2018年9月29日 上午10:26:20
* @修改人:cc
* @修改时间:2018年9月29日 上午10:26:20
*/
@Scheduled(fixedRate = 3000)
public void testScheduling1() {
System.out.println("执行时间为"+new Date()+"执行testScheduling1");
}
}
@Scheduled注解和之前spring使用xml配置定时任务类似:
@Scheduled(fixedRate = 5000) :上一次开始执行时间点之后5秒再执行
@Scheduled(fixedDelay = 5000) :上一次执行完毕时间点之后5秒再执行
@Scheduled(initialDelay=1000, fixedRate=5000) :第一次延迟1秒后执行,之后按fixedRate的规则每5秒执行一次
@Scheduled(cron="*/5 * * * * *") :通过cron表达式定义规则
c.上述方法写好后启动服务看下控制台结果:
2.异步调用异步调用
a.首先在spring boot主类上使用注解@EnableAsync启动异步调用
评论10