一个应用程序有多个实例。有一个作业将在特定时间运行。我怎样才能让作业仅由一个实例运行?

问题描述 投票:0回答:1

我们有一个垂直扩展应用程序(假设有 5 个实例),并且应用程序确实有一个计划作业,每小时执行一次以向客户发送电子邮件。由于存在多个实例,它将发送多封电子邮件。

java/spring 中是否有任何框架一次只能运行一个实例? 如何在多个实例中处理它。

java spring spring-boot scheduled-tasks
1个回答
0
投票

java/spring 中是否有任何框架一次只能运行一个实例?

是的。我看到你正在使用 Spring Boot。 Spring Boot 支持使用 Quartz Scheduler 来安排作业。在 Spring Boot 中启用 Quartz Scheduler 后,通过添加

spring-boot-starter-quartz
依赖项,您可以采取额外的步骤来配置 Quartz 以将数据库用作作业存储,并设置
spring.quartz.job-store-type=jdbc

完成这些操作后,您就可以定义一个计划的 Quartz 作业,Quartz 将使用数据库中的锁来确保它仅在 Spring Boot 应用程序的一个实例上运行。

这里有一个很好的教程

© www.soinside.com 2019 - 2024. All rights reserved.