我们有一个 Spring Boot 应用程序,并且有计划任务。
我们想在多台服务器上部署我们的应用程序,所以会有多个应用程序实例。
如何配置Spring只在指定的服务器上运行定时任务?
最佳答案
这是一个非常广泛的话题。有很多选择可以实现这一目标。
-Dspring.profiles.active=prod,cron
)在 S1 上运行。在 S2 和 S3 上只需使用 prod 配置文件( -Dspring.profiles.active=prod
)。在代码中,您可以使用
@Profile("cron")
在调度程序类上。这样它只会在 cron 配置文件处于事件状态时执行如果
getLock()
,请检查您的代码成功后才继续执行。 Mysql 有像 LOCK TABLES
这样的工具,您可以使用它来摆脱并发读/写。我个人会说,选项 2 是最好的。
关于多个实例上的 Spring 和计划任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49533543/