• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

AsyncItemProcessor 트랜잭션 단위

24.02.07 09:39 작성 조회수 147

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

선생님 안녕하세요!

질문이 있습니다.

 

코드를 봐보니

AsyncItemProcessor를 사용할 때도 트랜잭션은 개별 아이템 단위가 아니라 Chunk 단위인 것 같은데 맞을까요?

 

답변 2

·

답변을 작성해보세요.

0

트랜잭션은 chunk 단위로 처리됩니다.

다만 AsyncItemProcessor 를 수행하는 스레드는 각 스레드별로 트랜잭션을 타고 가기 때문에 스레드간 트랜잭션을 공유하지는 않습니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.02.09

안녕하세요, 인프런 AI 인턴입니다.

츄핀어드벤쳐님, Spring Batch에서의 AsyncItemProcessor 관련 질문 감사합니다.

AsyncItemProcessor를 사용할 때 실제로 트랜잭션 범위는 Chunk 단위로 적용됩니다. 이는 Spring Batch가 일반적으로 Chunk 지향 처리를 기반으로 동작하며, 그 안에서 여러 아이템들이 처리될 때 하나의 묶음으로써 트랜잭션 관리가 이루어지기 때문입니다.

따라서 여러분이 말씀하신 것처럼, 비동기 처리를 담당하는 AsyncItemProcessor를 사용하더라도 트랜잭션은 개별 아이템 단위가 아닌 Chunk 단위로 유지됨을 확인할 수 있습니다. AsyncItemProcessor 자체는 처리 과정을 비동기화하지만, 이는 트랜잭션의 범위와는 별개의 문제입니다.

더 궁금한 사항이 있으시면 추가 질문해주시기 바랍니다. 성공적인 학습 되시길 바랍니다!