개발자

SpringBatch 공부를 하다 궁금증이 생겨 질문드립니다.

2024년 02월 28일조회 260

SpringBatch 5를 공부하고 있습니다. Job과, Step 그리고 Step을 이루는 item reader, process, writer 로 구성되어 하나의 잡을 실행시킬 수 있다는 점을 공부하게 되었습니다. 문제가 된 부분은 Job을 여러개 두어 정해진 시간마다 돌게끔 하고싶다는 생각이 문제가 되었는데요, Job을 여러개 두려 하니 Job을 하나만 실행시켜야 하고, 시작할 때 돌리고 싶은 Job 을 명시하라는 등의 문제를 겪었습니다. 제가 구글링을 잘 못하는 것일수도 있지만 ..ㅠㅠ 많은 시간을 찾아봤는데도 아직 모르겠어서 질문드립니다..! 고수분들 .. 제가 여기서 잘못 알고있었던건지 아니면 아직 제가 방법을 모르는건지 모르겠어서 질문드립니다 ㅠㅠ..

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 1

정하선님의 프로필 사진

이전 버전으로 작성된 책이기는 해도 def-guide-spring-batch-master/chapter10 책과 소스 보시면 대충 이해될것 같습니다.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2024년 02월 28일

Spring Batch에서는 여러 Job을 직렬 혹은 병렬로 실행시킬 수 있습니다. 첫번째, Spring Batch의 JobLauncher를 이용해 여러개의 Job을 순차적으로 단일 스레드에서 실행할 수 있습니다. 다만, 해당 방법은 앞선 잡이 완료되어야 다음 잡이 시작됩니다. 아래는 예제 코드입니다. ```java @Autowired JobLauncher jobLauncher; @Autowired Job job1; @Autowired Job job2; public void runJobs() { try { jobLauncher.run(job1, new JobParameters()); jobLauncher.run(job2, new JobParameters()); } catch (Exception e) { e.printStackTrace(); } } ``` 두번째, 병렬로 수행하고 싶다면 @EnableScheduling 어노테이션과 함께 Scheduled 어노테이션을 사용해서 시간마다 작업을 수행하도록 할 수 있습니다. 아래는 예제 코드입니다. ```java @EnableScheduling @Configuration public class BatchConfig { @Autowired private JobLauncher jobLauncher; @Autowired private MyJob1 myJob1; @Autowired private MyJob2 myJob2; @Scheduled(cron = "<cron expression>") public void runMyJob1() throws Exception{ jobLauncher.run(myJob1.job(), new JobParametersBuilder().toJobParameters()); } @Scheduled(cron = "<cron expression>") public void runMyJob2() throws Exception{ jobLauncher.run(myJob2.job(), new JobParametersBuilder().toJobParameters()); } } ``` 이렇게 시간마다 각각의 Job을 독립적으로 실행시킬 수 있습니다. 이 방법은 스프링 배치 잡이 서로 관련성이 없을 때 좋은 방법입니다. 단, 이 방식은 병렬 처리이므로 잡들 사이에 의존성이 있다면 주의해야합니다. 세번째, 병렬로 Job을 실행하고 Job들 사이에서 데이터를 공유하고 싶다면 Spring Batch는 자체적으로 Step들을 병렬로 실행하는 기능을 제공합니다. 이는 Multi-threaded Step, Parallel Steps, Remote Chunking, Partitioning 등이 있습니다. 네가 가장 적합한 방법을 선택해서 사용할 수 있으니 한 번 찾아보세요!

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!