Home Spring Batch 간단한 정리
Post
Cancel

Spring Batch 간단한 정리

Batch DB 구조

스크린샷 2019-07-29 오후 5 20 21

Batch 기본 flow

스크린샷 2019-07-29 오후 5 21 27

Batch 기본 설명

  • step, job 등 bean 설정 한 것들은 당연히 id 가 겹쳐선 안됨. 나중것이 앞에것을 덮는 느낌. autowired 만 하다보면 헤딩할 수도 있음.
  • job execution id : 실행시켰을 떄 생기는 아이디, 1개만 생김
  • job instance id : job 호출을 받으면 instance 를 만들어서 실행하게 되는데, retry 를 할 수도 있으므로 하나의 job execution id 에 여러개 job instance id 가 생길 수도 있음.

  • chunk 단위 배치 프레임워크
    • job step tasklet 의 계층을 이루고 있음
    • tasklet 은 일반적으로 reader, processor(생략가능), writer 구조를 잡고
    • chunk 단위로 처리하며 commit 함. 롤백도 chunk 단위로 진행됨
    • reader 는 커서기반, 페이징 기반으로 구분되어있는데 별생각 없으면 paging reader 쓰면
  • spring batch test 에선 @Transactional 로 롤백이 안됨. 결론부터 얘기하면 spring-batch 는 실행되는 각각의 상태나 변수 등을 jobRepository 를 통해 DB 에 저장을 해둡니다. 이를 비즈니스 로직을 담당하는 transactionManager 와 묶어버리면 실행되는 상태나 변수 등이 한 번에 rollback 되거나 commit 되기에 rollback 이 안됩니다. 애초에 시작도 안됨.

  • java -jar 로 바로 job 실행 가능하고, web 으로 띄워서 살행도 가능은하나 jar 실행을 권장함 (리소스 다르게, 서버 필요없고, 빌드서버에서 실행가능 등등 장점)
  • StepScope 와 JobScope 개념.
    • 둘다 bean 을 prototype 으로 생성을 하는 것임. @StepScope를 tasklet reader 등 에 붙이는데 보통, 리턴값을 잘 설정하지 않으면 문제가 생김
    • 인터페이스에 StepScope 붙이면 발생하는 일 : https://jojoldu.tistory.com/132
1
2
3
o.s.b.c.l.AbstractListenerFactoryBean    : org.springframework.batch.item.ItemReader is an interface.
The implementing class will not be queried for annotation based listener configurations.
If using @StepScope on a @Bean method, be sure to return the implementing class so listner annotations can be used.
This post is licensed under CC BY 4.0 by the author.

Spring Data Jdbc 후기

Spring-data-rest 간단한 정리