如何在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