【发布时间】:2026-01-18 15:05:03
【问题描述】:
我们有一个 spring boot 应用程序和计划任务。
我们希望将我们的应用程序部署在多个服务器上,因此需要多个应用程序实例。
如何配置spring在多个实例上同时运行定时任务?
例如:上午 12 点部署在第一个服务器实例中的应用程序和计划在上午 12 点运行的任务。 相同的应用程序在上午 12.03 部署在第二个服务器实例中,由于部署任务存在差异,因此也在上午 12.03 开始使用相同的 cron 表达式,第三个在上午 12.05 部署在上午 12.05 开始的任务。
如何使任务同时运行(在多个实例中运行的所有三个任务需要在上午 12.05 点同时运行),所以我们得到所有三个任务的相同结果。
【问题讨论】:
-
使用相同的调度表达式...
-
使用相同的 cron 表达式,因为第二个和第三个服务器实例的部署被延迟,计划任务也开始作为不同的时间..如何让它同时运行所有 3 个?
-
@PhalaniKumar 你能说得更具体点吗?你在使用调度器注解吗?
-
我们使用带有 cron 表达式的 @Schedule 注释来安排每 5 分钟一次的作业...
-
每 5 分钟或每小时每 5 分钟。这是一个很大的区别(第一个取决于启动时间,另一个将在 12:00、12:05 等执行)。此外,在处理多个实例时,请确保共享资源确实有效并且不会阻塞。
标签: spring spring-boot synchronization scheduled-tasks java.util.concurrent