如何在Spring Batch中设置多线程?

我已经成功设置了Spring Batch项目教程。我真的很想知道是否有可能在“ Spring级别”使它成为多线程的。

我想要的基本思想是列出任务或任务步骤的列表,并让它们由独立的线程拾取和处理,理想情况下是从限制为“ n”个线程的池中进行。

这可能吗?如果是这样,怎么办?有人可以引导我到我目前所在的位置吗?

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

<import resource="applicationContext.xml"/>

<bean id="hello" class="helloworld.PrintTasklet">

<property name="message" value="Hello"/>

</bean>

<bean id="space" class="helloworld.PrintTasklet">

<property name="message" value=" "/>

</bean>

<bean id="world" class="helloworld.PrintTasklet">

<property name="message" value="World!\n"/>

</bean>

<bean id="taskletStep" class="org.springframework.batch.core.step.tasklet.TaskletStep" >

<property name="jobRepository" ref="jobRepository"/>

<property name="transactionManager" ref="transactionManager"/>

</bean>

<bean id="simpleJob" class="org.springframework.batch.core.job.SimpleJob">

<property name="name" value="simpleJob" />

<property name="steps">

<list>

<bean parent="taskletStep">

<property name="tasklet" ref="hello"/>

</bean>

<bean parent="taskletStep">

<property name="tasklet" ref="space"/>

</bean>

<bean parent="taskletStep">

<property name="tasklet" ref="world"/>

</bean>

</list>

</property>

<property name="jobRepository" ref="jobRepository"/>

</bean>

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

非常感谢你的帮助!

回答:

创建一个拆分,你将能够在不同分支之间使用多线程。使用TaskExecutor定义并行策略。

如果要使用多线程和MapJobRepository,请确保使用最新版本的Spring Batch(在最新版本之前,此JobRepository并非线程安全的)。

以上是 如何在Spring Batch中设置多线程? 的全部内容, 来源链接: utcz.com/qa/432915.html

回到顶部