programing

컨트롤러에서 스프링 배치 작업 실행

instargram 2023. 6. 21. 22:10
반응형

컨트롤러에서 스프링 배치 작업 실행

컨트롤러에서 배치 작업을 실행하려고 합니다.cron 작업에 의해 실행되거나 특정 링크에 액세스하여 실행됩니다.저는 스프링 부트를 사용하고 있습니다. XML은 사용하지 않고 주석만 달았습니다.

현재 설정에는 다음 콩이 포함된 서비스가 있습니다.

@EnableBatchProcessing
@PersistenceContext
public class batchService {

    @Bean
    public ItemReader<Somemodel> reader() {
        ...
    }

    @Bean
    public ItemProcessor<Somemodel, Somemodel> processor() {
        return new SomemodelProcessor();
    }

    @Bean
    public ItemWriter writer() {
        return new CustomItemWriter();
    }

    @Bean
    public Job importUserJob(JobBuilderFactory jobs, Step step1) {
        return jobs.get("importUserJob")
                .incrementer(new RunIdIncrementer())
                .flow(step1)
                .end()
                .build();
    }

    @Bean
    public Step step1(StepBuilderFactory stepBuilderFactory,       
            ItemReader<somemodel> reader,
            ItemWriter<somemodel> writer,
            ItemProcessor<somemodel, somemodel> processor) {

        return stepBuilderFactory.get("step1")
                .<somemodel, somemodel> chunk(100)
                .reader(reader)
                .processor(processor)
                .writer(writer)
                .build();
    }   
}   

내가 그것을 넣자마자.@Configuration내 batchService 클래스 위에 주석을 추가하면 응용 프로그램을 실행하는 즉시 작업이 시작됩니다.성공적으로 끝났습니다, 모든 것이 괜찮습니다.이제는 @Configuration 주석을 제거하고 원할 때마다 실행하려고 합니다.컨트롤러에서 발사할 수 있는 방법이 있습니까?

감사합니다!

src/main/resources에 application.yml 파일을 생성하고 다음 구성을 추가해야 합니다.

spring.batch.job.enabled: false

이렇게 변경하면 Spring Boot을 시작할 때 배치 작업이 자동으로 실행되지 않습니다.특정 링크가 발생하면 배치 작업이 트리거됩니다.

여기에서 샘플 코드를 확인하십시오. https://github.com/pauldeng/aws-elastic-beanstalk-worker-spring-boot-spring-batch-template

다음을 사용하여 프로그래밍 방식으로 배치 작업을 시작할 수 있습니다.JobLauncher컨트롤러에 주입할 수 있습니다.다음 컨트롤러 예제를 포함한 자세한 내용은 Spring Batch 설명서를 참조하십시오.

@Controller
public class JobLauncherController {

    @Autowired
    JobLauncher jobLauncher;

    @Autowired
    Job job;

    @RequestMapping("/jobLauncher.html")
    public void handle() throws Exception{
        jobLauncher.run(job, new JobParameters());
    }
}

Spring Boot을 사용하고 있으므로 다음을 수행해야 합니다.@Configuration시작할 때 작업을 시작하지 않도록 application.properties를 구성합니다.시작 시(또는 시작하지 않을 때) 작업을 실행하기 위한 자동 구성 옵션에 대한 자세한 내용은 Spring Boot 설명서에서 확인할 수 있습니다. http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/ #how to-spring-spring-spring-spring-spring-spring-spring-spring-on-spring-slink-on-on-startup

언급URL : https://stackoverflow.com/questions/28566341/run-spring-batch-job-from-the-controller

반응형