首页 > 解决方案 > Spring批处理作业是线程安全的吗?

问题描述

我需要并行化批处理弹簧作业的单个步骤。在要并行化的步骤之前,运行小任务,将一些结果放入作业的参数中。tasklet 产生的结果对于执行 Partitioner 和要并行化的步骤的 Items 是必需的。出现了一个我真的无法解决的疑问。由于我可以使用不同的初始参数同时运行相同的作业多次,因此 tasklet 和 step 项是否安全线程安全?

标签: spring-batch

解决方案


您不想运行同一作业的多个实例。在同一个步骤和/或作业中运行多个任务或流程会更好。您可能想要查找作业分区和/或远程卡盘以进行并发处理。

如果它必须是孤立的作业,那么您可能会让并发作业写出一个消息队列作为它们的结束(写入器)步骤,然后让另一个作业听从该队列读取。

https://docs.spring.io/spring-batch/2.1.x/cases/parallel.html


推荐阅读