如何在多个线程中同时运行spring批处理作业

时间:2015-10-04 20:05:40

标签: spring-batch

我有一个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的文档但它没有用。

注意:我的方案不适合分区程序。

1 个答案:

答案 0 :(得分:1)

你是什么意思&#34;不是&#34;工作?

如果您想要读取并处理每个线程的一个条目,您需要有一个&#34; commit-interval&#34;恰好一个。 (http://docs.spring.io/spring-batch/reference/html/configureStep.html

但请注意:由于多个线程将并行调用读取器和编写器(它们是单例实例),因此必须确保两者都是线程安全的。最简单的方法是同步read,resp。读写器的写法。