使用 Spring Scheduler 调用 Spring 批处理作业时运行批处理作业的多个实例

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

我有带有 Spring Batch 和 Spring Scheduler 的 Spring Boot 应用程序。当我尝试使用 @Scheduled 注释启用调度时,我看到两个执行正在运行,一个在主线程中,一个在计划中。我尝试在 @Scheduled 注释中添加初始延迟,但如果主线程花费的时间稍长于此延迟,则当调度程序尝试启动批处理作业时会抛出错误。

如何控制这种行为?我不希望主线程运行,或者我希望计划任务仅在主线程完成后才启动。

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

如果你想使用

@Scheduled
那么你需要使用分布式锁比如ShedLock:

https://github.com/lukas-krecan/ShedLock

如果您有更大的灵活性并且愿意接受其他事物,您可以使用完全不同的任务调度系统,例如db-scheduler

https://github.com/kagkarlsson/db-scheduler

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