2012-11-23 2 views
2

스프링 배치에서 단일 작업을 사용하여 여러 단계를 병렬로 실행하려고합니다. 다음은 내 구성이 어떻게 나타나는지 보여줍니다.스프링 배치 2.1.8 여러 단계 병렬 실행 제한 있음

<job id="gmegdc1" xmlns="http://www.springframework.org/schema/batch" > 
     <split id="splitStep" task-executor="taskExecutor"> 
      <flow> 
       <step id="step1" parent="simpleStep1"> 
        <tasklet ref="gdcTasklet1" task-executor="taskExecutor1" throttle-limit="6" />   
       </step> 
      </flow> 
      <flow> 
       <step id="step2" parent="simpleStep2"> 
        <tasklet ref="gdcTasklet2" task-executor="taskExecutor2" throttle-limit="6" /> 
       </step> 
      </flow> 
      <flow> 
       <step id="step3" parent="simpleStep3"> 
        <tasklet ref="gdcTasklet3" task-executor="taskExecutor3" throttle-limit="6" /> 
       </step> 
      </flow> 
      <flow> 
       <step id="step4" parent="simpleStep4"> 
        <tasklet ref="gdcTasklet4" task-executor="taskExecutor4" throttle-limit="6" /> 
       </step> 
      </flow> 
     </split>  
    </job> 

<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> 
     <property name="corePoolSize" value="25" />     
     <property name="maxPoolSize" value="25" />   
    </bean> 

<bean id="taskExecutor1" class="org.springframework.core.task.SimpleAsyncTaskExecutor"/> 
    <bean id="taskExecutor2" class="org.springframework.core.task.SimpleAsyncTaskExecutor"/> 
    <bean id="taskExecutor3" class="org.springframework.core.task.SimpleAsyncTaskExecutor"/> 
    <bean id="taskExecutor4" class="org.springframework.core.task.SimpleAsyncTaskExecutor"/> 

각 단계마다 6 개의 스레드를 실행하고 싶습니다. 이 구성을 사용하면 작업을 시작할 때마다 단계별로 8 개의 스레드 만 동시에 실행되었습니다. 이 때문에 일부 단계가 실행되지 않았으며 또한 모든 스레드가 실행될 수있는 잠재력을 얻고 있습니다. 여기서 무엇이 잘못 될지 확실하지 않습니다.

+0

파티셔닝을하셨습니까? http://static.springsource.org/spring-batch/trunk/reference/html/scalability.html#partitioning을 참조하십시오. –

답변

0

너무 늦을 수도 있습니다. 그러나 같은 문제를 가진 다른 사람들을 도울 수 있습니다.

스프링 배치 관리 프로젝트를 스프링 배치 응용 프로그램과 통합 한 경우 스레드 수를 8로 제한하는 것은 관리자입니다. 스프링 배치 관리자 종속성을 제거하고 간단한 스프링으로 내 스프링 배치를 만들었습니다 웹 응용 프로그램 및 이제 스레드 수가 8을 초과하고 maxpoolsize에 도달했습니다.

언급 할만한 또 하나의 점은 tasklet 태그의 throttle-limit 구성을 살펴 보는 것입니다.

관련 문제