【发布时间】:2021-07-31 17:50:34
【问题描述】:
我正在编写一个 Spring Batch 应用程序,它一次只能运行一个 Job Instance。如果启动了多个应用程序实例,这也应该是正确的。遗憾的是,这些作业不能并行化并且是随机调用的。
所以,我正在寻找的是一种 Spring Boot 配置,它允许我在一个处理器内以及在分布式情况下同步作业执行。我已经找到了一些方法,例如 JobLauncherSynchronizer (https://docs.spring.io/spring-batch-admin/trunk/apidocs/org/springframework/batch/admin/launch/JobLauncherSynchronizer.html),但我发现的所有解决方案要么仅在一个处理器上工作,要么仅保护一小部分作业执行。
是否有任何 Spring Boot 配置可以防止同一作业的多个并发执行,即使跨多个并发运行的应用程序实例(共享同一个数据库)?
提前谢谢你。
【问题讨论】:
-
我做了一个POC,可以帮到你github.com/jamataran/spring-batch-scale
标签: java spring spring-boot spring-batch