远程分区:为什么步骤不能并行运行?

时间:2017-03-21 01:21:12

标签: spring-integration spring-batch

我正在使用 Spring Batch远程分区。我的步骤没有并行运行。相反,它们顺序运行我的意思是分区步骤顺序运行。 问题的根本原因是什么?

1 个答案:

答案 0 :(得分:0)

我对Spring Batch比较新,但是当我第一次尝试编写自己的分区步骤时,我遇到了类似的问题。

在我的情况下,问题是我的taskExecutor(它不是异步的)。 我添加了一个@Bean来初始化一个asynTaskExecutor并将其链接到我的分区步骤。尤里卡,它有效。

以下是一个例子:

private Step partitionStep() throws SQLException {
    return stepBuilderFactory.get("example_partitionstep")
            .partitioner(step.getName(), columnRangePartitioner(partitionColumn, tableName))
            .partitionHandler(taskExecutorPartitionHandler(step))
            .build();
}

对于步骤:

private Step step() throws SQLException {
    return stepBuilderFactory.get("example_step")
            .<>chunk(1000)
            .reader(cursorItemReader(0L, 0L))
            .processor(compositeItemProcessor())
            .writer(itemWriter())
            .build();
}

对于TaskExecutor:

@Bean
public TaskExecutor taskExecutor() {
    SimpleAsyncTaskExecutor taskExecutor = new SimpleAsyncTaskExecutor();

    taskExecutor.setConcurrencyLimit(6);

    return taskExecutor;
}