2017-03-21 128 views
-3

我使用的是Spring批处理远程分区。我的步骤不是并行运行。相反,他们顺序运行我的意思是分区的步骤顺序运行。 问题的根源是什么?远程分区:为什么步骤不能并行运行?

+0

为什么你默默的看着我们? –

+0

我不喊。我真的需要这个细节/解释。对不起,如果误解了 – Raheem

+0

你还在静坐。看看问题的主要页面;你看到有多少个键入全部大写字母? (答案:没有,因为像互联网上的其他地方一样,输入ALL CAPS被认为是SHOUTING,而我们在这里不是SHOUT。)你不仅是SHOUTING,而且是** SHOUTING LOUDLY **它大胆。请相应地编辑你的问题。您还应该参加[导览]并阅读[帮助]页面,特别是[问]。 –

回答

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; 
} 
相关问题