Spring

스프링 배치 프로세스를 통해 현재 실행중인 프로세스를 모니터링하고 스로틀 제한에 도달하면 알림

기록만이살길 2021. 3. 24. 05:03
반응형

스프링 배치 프로세스를 통해 현재 실행중인 프로세스를 모니터링하고 스로틀 제한에 도달하면 알림

1. 질문(문제점):

스프링 부트 웹 애플리케이션이 있고 일괄 처리를 통해 CSV 파일의 세부 정보를 업로드하고 싶습니다. 모든 위치에서 파일을 업로드 할 수 있으며 한 번에 3 개의 작업을 처리하는 것을 제한하고 싶습니다. 이미 3 개의 파일을 처리중인 경우 "스로틀 제한에 도달했습니다. 잠시 후 시도하십시오"와 같이 해당 정보를 UI에 제공해야합니다. 어떻게 이것을 달성 할 수 있습니까? 내 현재 flow.xml은 마스터 슬레이브 접근 방식입니다.

    <!-- partitioner job -->
    <job id="partitionJob" xmlns="http://www.springframework.org/schema/batch">

    <!-- master step -->
            <step id="masterStep">
              <partition step="slave" partitioner="partitioner">
                    <handler grid-size="1" task-executor="taskExecutor" />
               </partition>
            </step>

    </job>

    <!-- each thread will run this job, with different stepExecutionContext
    values. -->
    <step id="slave" xmlns="http://www.springframework.org/schema/batch">
            <tasklet transaction-manager="transactionManager"  throttle-limit="3">
                <chunk reader="itemReader" processor="userItemProcessor" writer="itemWriter"
               commit-interval="10" />
                 <listeners>
                        <listener ref="stepJobListener" />
                  </listeners>
            </tasklet>
    </step>

2. 해결방안:

throttle-limit="3"단계에 당신이 한 세트는 당신의 단계를 실행 스레드입니다. 사용 사례의 경우 동시 작업 수를 제한하기 위해에서 TaskExecutor사용하는 구성 방법을 찾고 있어야합니다 JobLauncher.

당신은 예를 들어를 구성 할 수 있습니다 JobLauncher로모그래퍼 ThreadPoolTaskExecutor당신이 설정하는 queueCapacity당신이 한 번에 3 개 이상의 작업을 제출할 경우,이 구성 3.를, 4 제출 된 작업이 실패하고 당신은 당신의 UI에서 오류를 표시 할 수 있습니다.

모니터링 부분의 경우 Spring 프레임 워크 모니터링 ThreadPoolTaskExecutor 큐 크기에 설명 된대로 실행기의 큐 크기를 검사 할 수 있습니다.

65661412
반응형