2017-03-21 71 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; 
} 
相關問題