작성
·
207
답변 1
0
안녕하십니까, 요즘 몸이 좀 안 좋아서 답변이 늦었습니다.
질문을 정확히 이해한 것인지는 모르겠지만,
jdbc sink connector가 __consumer_offset에 write를 하는 시점은 Consumer가 Kafka Message를 가져오는 시점이 아니라 Sink connector가 target db에 성공적으로 DML을 수행한 뒤에 write됩니다.
감사합니다.
기억이 가물하긴 한데, 예전에 테스트 한 경험으로는 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편에서 자세하게 알아볼 수 있습니다~!
아이고 다시 하루 빨리 건강해지시길 바라겠습니다.
그러면 JDBC Sink Connector 의 Consumer는 기존의 Kafka Consumer랑 다르다고 생각하면 되나요? 기존의 kafka consumer는 poll 하고 commit하는 방식이었던걸로 기억해서요