我有一个Spring Batch应用程序.此应用程序的步骤配置为多线程.
<bean id="simpleTaskExecutor"
class="org.springframework.core.task.SimpleAsyncTaskExecutor">
<property name="concurrencyLimit" value="10"/>
</bean>
<batch:job id="rabbitReadJob" job-repository="jobRepository">
<batch:step id="step1">
<batch:tasklet task-executor="simpleTaskExecutor" throttle-limit="10">
<batch:chunk
reader="CarItemReader"
processor="CarItemProcessor"
writer="CarItemWriter"
commit-interval="2">
</batch:chunk>
</batch:tasklet>
</batch:step>
</batch:job>
Run Code Online (Sandbox Code Playgroud)
提交间隔为2,然后项目读取器的线程读取2个itens并发送到进程.项目阅读器的其他线程读取其他2个itens并发送到进程.两个线程的Itens同时执行该进程,但我们需要等待第一个项目完成以执行第二个.为了方便起见,我将发布执行日志.
INFO 06-01 12:44:53,344 - >>>>>>>>>> start processor id 1
INFO 06-01 12:44:53,355 - >>>>>>>>>> start processor id 3
INFO 06-01 12:44:53,362 - >>>>>>>>>> start processor id 5
INFO 06-01 12:44:53,456 - >>>>>>>>>> finish processor id 5
INFO 06-01 12:44:53,456 - >>>>>>>>>> finish processor id 3
INFO 06-01 12:44:53,456 - >>>>>>>>>> start processor id …Run Code Online (Sandbox Code Playgroud)