如何在Spring Batch中设置multithreading?

我已经成功建立了一个Spring Batch项目教程。 我真的很想知道是否可以在“Spring级别”使它成为multithreading。

我想要的基本思路是制作一个任务列表或任务步骤,让它们被独立的线程拾取和处理,理想情况下是一个限于’n’个线程的池。

这可能吗? 如果是这样,怎么样? 有人可以从我目前所在的地方指导我到那一点吗?

我所拥有的简单项目来自本教程。 它基本上有不同的任务,可以将信息打印到屏幕上。

这是我当前的simpleJob.xml文件,其中包含作业详细信息:

                               

我的appContext包含作业存储库bean( SimpleJobRepository ),事务管理器( ResourceLessTransactionManager )和作业启动器( SimpleJobLauncher )。 如果需要的话,我也可以提供这个代码,我只是不想用大量的XML来破坏这篇文章。

非常感谢您的帮助!

创建一个Split,你将能够在不同的分支之间使用multithreading。 使用TaskExecutor定义并行策略。

请参阅multithreading步骤

如果要使用multithreading和MapJobRepository(在最新版本之前,此JobRepository不是线程安全的),请务必使用最新版本的Spring Batch。

看看Jean的答案。 一种简单的方法是创建一个SimpleAsyncTaskExecutor的bean,并关联一个tasklet来使用这个bean,就像那样。