강의

멘토링

커뮤니티

Inflearn Community Q&A

dohyunlim's profile image
dohyunlim

asked

Kafka Complete Guide - Connect

Understanding Message Batch Processing for JDBC Sink Connector

JDBC Sink Connector의 메시지 배치(Batch) 처리 이해

Written on

·

232

0

안녕하세요 강사님

kafka에서 JDBC SInk Connector의 Consumer가 Offset 450개로 가져가는 순간 commit 이 되어서 __consumer_offsets가 update되는것이 아니라

executeBatch()가 까지 다 성공해야 commit이 날라가서 __consumer_offsets가 update되는 구조인가요?

kafka데이터-엔지니어링

Answer 1

0

dooleyz3525님의 프로필 이미지
dooleyz3525
Instructor

안녕하십니까, 요즘 몸이 좀 안 좋아서 답변이 늦었습니다.

질문을 정확히 이해한 것인지는 모르겠지만,

jdbc sink connector가 __consumer_offset에 write를 하는 시점은 Consumer가 Kafka Message를 가져오는 시점이 아니라 Sink connector가 target db에 성공적으로 DML을 수행한 뒤에 write됩니다.

감사합니다.

dohyunlim님의 프로필 이미지
dohyunlim
Questioner

아이고 다시 하루 빨리 건강해지시길 바라겠습니다.

image.png



그러면 JDBC Sink Connector 의 Consumer는 기존의 Kafka Consumer랑 다르다고 생각하면 되나요? 기존의 kafka consumer는 poll 하고 commit하는 방식이었던걸로 기억해서요

dooleyz3525님의 프로필 이미지
dooleyz3525
Instructor

기억이 가물하긴 한데, 예전에 테스트 한 경험으로는 target db에 제대로 작업이 안되었으면 commit을 안한것 같습니다. 아마 connector 단에서 db 작업까지 감안한 뒤에 commit 하도록 되어 있는것 같습니다..

근데, 저도 시간이 나면 다시 테스트를 한번 해봐야 할 것 같습니다. 시간 나면 다시 테스트 해보고 확실하게 말씀드리겠습니다.

다음 사람들을 위해 보충 설명 남깁니다.
선생님께서 말씀하신대로, Sink connector가 target db에 성공적으로 DML 수행한 뒤 commit되고 syn-ack를 주고 받으면 __consumer_offset을 write하게 됩니다.

 

기존의 kafka consumer는 poll 하고 최종적으로 트랜잭션을 타고 DB에 commit하는 방식이 맞으며, 이를 JDBC Sink Connector가 수행합니다.

 

해당 프로세스는 카프카 core편에서 자세하게 알아볼 수 있습니다~!

dohyunlim's profile image
dohyunlim

asked

Ask a question