我有一个Spring批处理作业,其定义如下:
<batch:step id="step1">
<batch:tasklet task-executor="simpleTaskExecutor">
<batch:chunk reader="itemReader" processor="itemProcessor"
writer="itemWriter" >
</batch:chunk>
</batch:tasklet>
</batch:step>
<bean id="itemReader" class="CustomReader">
</bean>
自定义阅读器,从数据库中读取一行并将其传递给处理器以进行进一步处理。
我的问题是我想同时拥有多个线程来同时运行这个作业(每个读取一行和一个进程)。基于我使用taskExecutor的文档但它没有用。
注意:我的方案不适合分区程序。
答案 0 :(得分:1)
你是什么意思&#34;不是&#34;工作?
如果您想要读取并处理每个线程的一个条目,您需要有一个&#34; commit-interval&#34;恰好一个。 (http://docs.spring.io/spring-batch/reference/html/configureStep.html)
但请注意:由于多个线程将并行调用读取器和编写器(它们是单例实例),因此必须确保两者都是线程安全的。最简单的方法是同步read,resp。读写器的写法。