본문 바로가기

Spring/batch15

[spring batch 2편] FlatFileItemWriter Fixed length format 정리 (Header, Footer 사용) source 는 Github 에 있습니다. 목차는 spring batch 목차 에 있습니다. [spring batch 2편] FlatFileItemWriter Fixed length format 정리 (Header, Footer 사용) 파일을 쓸 때, Fixed length 와 Formatter 를 조합하는 예제에 대해서 정리했습니다. DTO to FixedLength format 으로 변환해서 파일을 쓰는 예제입니다. 파일을 쓸 때, Java 의 Formatter 를 사용할 수 있습니다. Source 아래 예제에서 formatted() 옵션을 주면 Java 의 Formatter 를 사용할 수 있습니다. 자바의 Formatter 는 링크 를 참고하시면 됩니다. Formatter 를 이용한다면 왼쪽 정렬,.. 2022. 8. 18.
[spring batch 1편] spring batch processor, Writer 에서 sequence 를 mybatis 를 통해 여러 번 가져왔을 때, 같은 값이 나오는 경우 source 는 Github 에 있습니다. 목차는 Querydsl 목차 에 있습니다. [spring batch 1편] spring batch processor, Writer 에서 sequence 를 mybatis 를 통해 여러 번 가져왔을 때, 같은 값이 나오는 경우 현상 spring-batch chunked tasklet 의 processor 또는 Writer 에서 sequence 를 mybatis 를 통해 nextval 로 여러 번 가져왔을 때, 같은 값이 나오는 경우가 발생했습니다. 원인 같은 트랜잭션일 경우에만 이런 현상이 나옵니다. sequence.nextval 을 가져올 때, 서버 쪽에 commit 명령어를 날려줘야 다음 값을 가져오도록 세팅되는 것이라 추정하고 있습니다. 해결방안 mapper.. 2022. 8. 10.
QuerydslPagingItemReader 병렬 처리 정리 source 는 Github 에 있습니다. QuerydslPagingItemReader 병렬 처리 가능한가? QuerydslPagingItemReader 는 querydsl 을 이용하여 db 데이터를 읽어올 때, 페이지 단위로 읽어오는 컴포넌트입니다. 상세 설명 QuerydslPagingItemReader 결론부터 얘기하면 QuerydslPagingItemReader 병렬 처리 시, thread-safe 합니다. 아래 소스를 보면 QuerydslPagingItemReader 는 AbstractPagingItemReader 상속받고 있습니다. spring-bagch 내부 엔진에서 AbstractPagingItemReader 의 doRead() 를 호출하고, doRead() 내에서 QuerydslPaging.. 2021. 9. 29.
spring batch partitioner 정리 source 는 Github 에 있습니다. spring batch partitioner 정리 partitioner 개념 partitioner 는 하나의 jvm 내에서 멀티 스레드로 처리하는 방법입니다. partitioner 에서 데이터를 나누고 각 스텝에 나눈 데이터를 분배하여, 스텝에서는 분배받은 데이터를 가지고 프로그램을 수행합니다. 스레드 측면에서 보면 partitioner 라는 스레드가 데이터를 나눠서 각 스텝에 나눠주는데, 이 스텝들은 별도의 스레드에서 동작하게 됩니다. 즉, ItemReader, ItemWriter 가 thread-safe 하지 않아도 됩니다. Multi thread step 의 경우 ItemReader, ItemWriter 는 thread-safe 해야 합니다. Multi t.. 2021. 8. 18.