Spring Boot中使用@Scheduled创建定时任务
来源:互联网 发布:绝地求生画面优化补丁 编辑:程序博客网 时间:2024/06/13 03:14
http://www.iigrowing.cn/spring_boot_zhong_shi_yong_scheduled_chuang_jian_ding_shi_ren_wu.html
下面进入正题,在spring boot中,如何来处理定时任务。
默认,springboot已经支持了定时任务Schedule模块,所以一般情况已经完全能够满足我们的实际需求,一般来说,没有必要在加入其他类似于:quartz
另外,在这里提一个实际项目中,关于定时任务的架构上的一些考虑:
一般来说,实际项目中,为了提高服务的响应能力,我们一般会通过负载均衡的方式,或者反向代理多个节点的方式来进行。通俗点来说,我们一般会将项目部署多实例,或者说部署多份,每个实例不同的启动端口。但是每个实例的代码其实都是一样的。如果我们将定时任务写在我们的项目中,就会面临一个麻烦,就是比如我们部署了3个实例,三个实例一启动,就会把定时任务都启动,那么在同一个时间点,定时任务会一起执行,也就是会执行3次,这样很可能会导致我们的业务出现错误。
一般来说,我们有几种简单的办法来处理:
1、配置文件中增加自定义配置,通过开关来进行控制:比如增加:schedule=enable , schedule=disable,这样在我们的实际代码中,在进行判断,也就是我们可以通过配置,达到,只有一个实例真正执行定时任务,其他的是实例不执行。但是,这种做法实际是还是定时任务都启动,只是在执行中,我们人工来进行判断,执行于不执行真正的处理逻辑。
2、逻辑分离,就是我们将真正要定时任务处理的逻辑,写成rest服务,或者rpc服务,然后我们可以新建一个单独的定时任务项目,这个项目应该是没有任何的业务代码的,他纯粹只有定时任务功能,几点启动,或者每隔多少时间启动,启动后,通过rest或者rpc的方式,调用真正处理逻辑的服务。同时,我们甚至可以不用新建一个项目,我们通过linux的cron就可以进行。同时,这种方式还有一个好处,比如有些时候,我们的定时任务也会因为某些原因出现问题,没有执行,那么我们就可以通过curl 或者wget等等很多方式,再次定时任务的执行。
所以,个人一般偏向使用第二种方式,达到定时任务和业务处理的分离。
- Spring Boot中使用@Scheduled创建定时任务
- Spring Boot中使用@Scheduled创建定时任务
- Spring Boot中使用@Scheduled创建定时任务
- 在Spring Boot中使用@Scheduled实现定时任务
- 在Spring Boot中使用@Scheduled实现定时任务
- 在Spring Boot中使用@Scheduled实现定时任务
- 在Spring Boot中使用@Scheduled实现定时任务
- 在Spring Boot中使用@Scheduled实现定时任务
- spring-boot 使用@Scheduled 开启定时任务
- spring中@scheduled定时任务的使用
- Spring Boot (八)增加@Scheduled创建定时任务
- spring @Scheduled 定时任务使用
- spring boot 学习(八)定时任务 @Scheduled
- spring-boot 定时任务之Scheduled Task
- spring boot 计划任务,定时任务的注解的使用@Scheduled@EnableScheduling
- Spring 定时任务 @Scheduled
- spring scheduled定时任务
- Spring定时任务(@Scheduled)
- mock.js使用
- effective c++条款二十九解读
- spring 定时器
- 欢迎使用CSDN-markdown编辑器
- TextView跑马灯效果
- Spring Boot中使用@Scheduled创建定时任务
- 最少资源处理高并发之nginx操作redis(一)
- flume+kafka+spark streaming(持续更新)
- Python之如何实现一行输入多个值
- 《中国哲学简史》
- 几种不同的二分查找
- 接口自动化测试框架 (一) :APIAutoTest框架
- Sublime text3使用时有卡顿现象
- List,Map,Set用法以及区别总结