如何在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,就像那样。