복붙노트

[SPRING] Spring batch 여러 단계를 병렬로 파티션하기?

SPRING

Spring batch 여러 단계를 병렬로 파티션하기?

나는 스프링 스텝 파티셔닝을 마스터 스텝이 병렬로 실행되는 것보다 여러 슬레이브 스레드에 위임하는 단일 스텝을 구현했다. 다음 그림과 같이 (Spring 문서 참조) 병렬로 실행해야하는 여러 단계가 있다면 어떻게 될까요? 일괄 구성으로 구성하는 방법 현재 구성 :

 <batch:job id="myJob" restartable="true" job-repository="jobRepository" >
        <batch:listeners>
            <batch:listener ref="myJoblistener"></batch:listener>
        </batch:listeners>

        <batch:step id="my-master-step">
            <batch:partition step="my-step" partitioner="my-step-partitioner" handler="my-partitioner-handler">
            </batch:partition>
        </batch:step>
    </batch:job>

    <batch:step id="my-step" >
        <batch:tasklet ref="myTasklet" transaction-manager="transactionManager" >
        </batch:tasklet>
        <batch:listeners>
            <batch:listener ref="myStepListener"></batch:listener>
        </batch:listeners> 
    </batch:step>

내 아키텍처 다이어그램은 다음과 같은 이미지 여야합니다.

스프링 배치를 사용해도 가능할지 모르겠다. 모든 아이디어가 있거나 그것을 구현하기 위해 머리를 쓰고있다. 고마워.

해결법

  1. ==============================

    1.당신은 다음을 시도 할 수 있습니다.

    당신은 다음을 시도 할 수 있습니다.

     <batch:job id="myJob" restartable="true" job-repository="jobRepository" >
            <batch:listeners>
                <batch:listener ref="myJoblistener"></batch:listener>
            </batch:listeners>
    
            <batch:step id="my-master-step">
                <batch:partition step="my-step" partitioner="my-step-partitioner" handler="my-partitioner-handler">
                </batch:partition>
            </batch:step>
        </batch:job>
    
        <batch:step id="my-step" >
            <batch:job ref="MyChildJob" job-launcher="jobLauncher"
                    job-parameters-extractor="jobParametersExtractor" />
            <batch:listeners>
                <batch:listener ref="myStepListener"></batch:listener>
            </batch:listeners> 
        </batch:step>
    
        <batch:job id="MyChildJob" restartable="false"
            xmlns="http://www.springframework.org/schema/batch">
            <batch:step id="MyChildStep1" next="MyChildStep2">
                <batch:tasklet ref="MyChildStep1Tasklet" transaction-manager="transactionManager" >
                </batch:tasklet>
            </batch:step>
    
            <batch:step id="MyChildStep2" next="MyChildStep3">
                <batch:tasklet ref="MyChildStep2Tasklet" transaction-manager="transactionManager" >
                </batch:tasklet>
            </batch:step>
    
            <batch:step id="MyChildStep3">
                <batch:tasklet ref="MyChildStep3Tasklet" transaction-manager="transactionManager" >
                </batch:tasklet>
            </batch:step>
    
        </batch:job>
    
  2. ==============================

    2.비슷한 요구 사항을 가지고 있으며 아래 요구 사항을 사용하여 해결했습니다.

    비슷한 요구 사항을 가지고 있으며 아래 요구 사항을 사용하여 해결했습니다.

    <batch:job id="cycleJob">
            <batch:step id="zStep" next="gStep">
                <batch:partition partitioner="zPartitioner">
                    <batch:step>
                        <batch:tasklet throttle-limit="1">
                            <batch:chunk processor="itemProcessor" reader="zReader" writer="itemWriter" commit-interval="1">
                            </batch:chunk>
                        </batch:tasklet>
                    </batch:step>
                    <batch:handler task-executor="taskExecutor" grid-size="${maxThreads}" />
                </batch:partition>
            </batch:step>
            <batch:step id="gStep" parent="zStep" next="yStep">
                <batch:partition partitioner="gPartitioner">
                    <batch:step>
                        <batch:tasklet throttle-limit="1">
                            <batch:chunk processor="itemProcessor" reader="gReader" writer="itemWriter" commit-interval="1">
                            </batch:chunk>
                        </batch:tasklet>
                    </batch:step>
                    <batch:handler task-executor="taskExecutor" grid-size="${maxThreads}" />
                </batch:partition>
            </batch:step>
    </batch:job>
    
  3. from https://stackoverflow.com/questions/23357024/spring-batch-partitioning-with-multiple-steps-in-parallel by cc-by-sa and MIT license