2016-06-20 16 views
0

パーティションのグリッド・サイズがPartitioner.partition()メソッドによって戻されるMapのサイズと同じである必要がありますか?Springバッチ・パーティショニング:実行時にグリッド・サイズを設定する

春のバッチ分割シナリオでは、2つのステップがあります。最初のステップは処理されるレコードの総数を示し、2番目のステップ(TaskExecutorPartitionHandlerに基づくパーティション化されたステップ)はレコードを1000のバッチで処理します。

20500レコードがある場合、 Partitioner.partition()メソッドは21であり、21の同時実行が必要になります。この場合、パーティションのグリッドサイズは21になるはずですか?

処理されるレコードの総数が毎日変更されるとどうなりますか?最初のステップが完了した後、実行時にパーティションのグリッドサイズをどのように割り当てることができますか?最初のステップは、jobExecutionContext

ExecutionContext jobExecutionContext = 
chunkContext.getStepContext().getStepExecution().getJobExecution().getExecutionContext(); 

jobExecutionContext.putInt("gridSize", 21); 

グリッドサイズを格納することができ、それは後でPartitionHandlerに注入することができるように

+0

これが役立ちます。 http://stackoverflow.com/questions/7759156/grid-size-in-spring-batch – Veeram

答えて

0

が見えます。

<job id="testJob" xmlns="http://www.springframework.org/schema/batch"> 
    <step id="firstStep" next="secondStep.master"> 
     <tasklet ref="firstTasklet"/> 
    </step> 
    <step id="secondStep.master"> 
     <partition partitioner="partitioner" handler="taskExecutorPartitionHandler"/> 
    </step> 
</job> 

<bean id="taskExecutorPartitionHandler" class="org.springframework.batch.core.partition.support.TaskExecutorPartitionHandler" scope="step"> 
    <property name="taskExecutor" ref="threadPoolTaskExecutor"/> 
    <property name="step" ref="secondStep.slave" /> 
    <property name="gridSize" value="#{jobExecutionContext['gridSize']}" /> 
</bean> 
関連する問題