복붙노트

[SPRING] 다중 스프링 배치 작업

SPRING

다중 스프링 배치 작업

스프링 부트에서 @Scheduled 주석을 사용하여 여러 작업을 트리거하고 있습니다.

다음은 코드 스 니펫입니다.

    @EnableBatchProcessing
    @EnableScheduling
    public class Config extends DefaultBatchConfigurer{

            @Autowired
            JobLauncher launcher;

            @Scheduled
            public void run(){
            String[] argList = {"A", "B"};
            for(String char : argList){
                launcher.run(job(), 
                new JobParametersBuilder().
                addString("char", char).
                toJobParameters());
               } 
             }

       public Job job(){
       //Job definition is here.
       }
    }

그러나 이는 2 개의 작업을 연속적으로 트리거하지만 병렬이 아닙니다. 즉, 매개 변수 "A"가있는 작업이 완료되면 매개 변수 "B"로 작업을 시작합니다.

이 작업을 병렬로 실행할 수있는 방법이 있습니까?

감사!

해결법

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

    1.일부 설정 파일에서 JobLauncher를 정의하고 작업 비동기를 실행할 작업 실행자로 SimpleAsyncTaskExecutor를 설정할 수 있습니다 (다음 작업을 시작하기 위해 완료 할 때까지 기다리지 않음).

    일부 설정 파일에서 JobLauncher를 정의하고 작업 비동기를 실행할 작업 실행자로 SimpleAsyncTaskExecutor를 설정할 수 있습니다 (다음 작업을 시작하기 위해 완료 할 때까지 기다리지 않음).

    다음 코드 스 니펫이 있습니다.

    @Bean
    public JobLauncher jobLauncher() {
        final SimpleJobLauncher jobLauncher = new SimpleJobLauncher();
        jobLauncher.setJobRepository(jobRepository);
        final SimpleAsyncTaskExecutor simpleAsyncTaskExecutor = new SimpleAsyncTaskExecutor();
        jobLauncher.setTaskExecutor(simpleAsyncTaskExecutor);
        return jobLauncher;
     }
    
  2. from https://stackoverflow.com/questions/30332722/multiple-spring-batch-jobs by cc-by-sa and MIT license