Kafka 커밋
Commit
컨슈머는 카프카 브로커로부터 데이터를 어디가지 가져갔는지 커밋을 통해 기록한다.
특정 토픽의 파티션을 어떤 컨슈머 그룹이 몇 번째 가져갔는지 카프카 브로커 내부에서 사용되는 내부 토픽(__consumer_offsets)에 기록된다.
- 컨슈머 동작 이슈가 발생하여 __consumer_offsets 토픽에 어느 레코드까지 읽어갔는지 오프셋 커밋이 기록되지 못했다면 데이터 처리의 중복이 발생할 수 있다.
- 그러므로 데이터 처리의 중복이 발생하지 않게 하기 위해 컨슈머 애플리케이션이 오프셋 커밋을 정상적으로 처리했는지 검증해야만 한다.
동기 오프셋 커밋
consumer.commitSync()
커밋을 한다는 것 자체가 브로커와 통신하는 것이기 때문에 레코드별로 커밋을 수행한다면 데이터 처리량이 줄어든다.
레코드 단위의 커밋은 일반적인 환경에서는 많이 활용되지 않는다.
비동기 오프셋 커밋
consumer.commitAsync()
비동기로 백그라운드에서 커밋을 실행한다.
비동기 오프셋 커밋 콜백
컨슈머의 commitAsync()
함수에 OffsetCommitCallback 을 구현한다.
오토 커밋
카프카에서 가장 기본적으로 사용되는 커밋 설정
설정된 주기마다 커밋을 자동으로 진행한다.
Comments