我正在使用 Spring Batch远程分区。我的步骤没有并行运行。相反,它们顺序运行我的意思是分区步骤顺序运行。 问题的根本原因是什么?
答案 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;
}