SuperAPI AI 工具集

spring-boot-scheduling

通用与其它

查看项目

更新于 10-15 22:13

技能介绍

用途:为 Spring Boot 项目提供定时任务(@Scheduled)与分布式锁(ShedLock)的实现规范,属于优先级 P0 的标准。

主要能力与要求:

  1. 配置定时任务:必须配置专用的 TaskScheduler 线程池(默认仅 1 个线程),并通过 @EnableScheduling 注解启用调度。
  2. 异步处理:@Scheduled 方法应保持轻量,将耗时逻辑卸载到 @Async 或队列;逻辑需用 try/catch 包裹,记录错误,并对瞬时失败使用 @Retryable 重试。
  3. 使用 ShedLock 加锁:解决 @Scheduled 在 K8s 中所有 Pod 上都会执行的问题,保证任务单次执行。配置时需设置 lockAtMostFor(防止死锁的安全上限)与 lockAtLeastFor(防抖)。

反模式(应避免):

  • 不配置默认线程池:应配置专用 TaskScheduler(默认 1 线程)。
  • 多 Pod 部署下不使用 ShedLock 导致重复执行分布式 cron。
  • 任务无状态设计缺失:任务应设计为幂等,并假设 Pod 可能随时重启。

使用方式与限制:资料仅给出规范要点与实现示例指引,未提供具体代码、依赖坐标或安装命令;具体 ShedLock 分布式任务配置与调度线程池搭建需参考其实现示例。适用场景为 Spring Boot 定时任务开发,尤其是多副本部署环境。