一、spring boot task 的实践
(1) SpringBoot整合定时任务task非常的简单,共分为以下三步:
- 在启动类加上@EnableScheduling注解
- 在controller的类上加上@Component注解(或者分离出一个组件)
- 在controller的方法上加上@Scheduled注解即可
之后启动程序,就会自动开始执行任务了
(2)Cron表达式确定定时规则的方法
- 在线cron表达式生成器地址:http://cron.qqe2.com/
- 特殊指定时间规则
- fixedRate: 上一次 启动时间点之后 X秒执行一次
- fixedDelay: 上一次 结束时间点之后 每X秒执行一次
- initialDelay: 第一次延迟 X秒执行,之后按照fixedRate的规则每X秒执行
(3) 分布式场景产生的问题
部署多台服务之后,到底哪个服务器执行呢,那么就应该思考代码问题,不管不是timer,还是quatz等都是存在问题的,这种问题可以采用一下来执行:
- 可以选择代码分离进行单台部署,
- 可以选择redis分布式锁,让一台服务拿到相应的key之后去执行
- 使用zookeeper分布式锁获取单个锁,
转载:https://blog.csdn.net/qq_41893274/article/details/106366854
查看评论