이 글은 Udemy의 '초보자를 위한 아파치 카프카 강의 v3'를 듣고 정리한 내용이다.
컨슈머 그룹
- 컨슈머는 그룹형태로 데이터를 읽어옴
- 그룹 안의 컨슈머들은 각각 상호배타적으로 파티션을 읽어옴
- 만약 파티션의 개수보다 컨슈머가 많은면, 여유분은 stand by
컨슈머 오프셋
- 커밋된 offset은 '__consumer_offset'이라는 카프카 토픽으로 저장
- 데이터가 충돌나거나 실패한 곳 (offset)부터 읽어올 수 있음
- java consumer는 자동으로 offset commit
- 수동 커밋
- at least once (주로 사용됨)
- 메시지가 처리된 후 오프셋이 커밋됨
- 문제가 생겼을때 다시 읽을 수 있음(멱등성 보장)
- 메시지 중복이 발생될 수 있음
- at most once
- 메세지가 도착하자 마자 바로 오프셋 커밋
- 문제가 생겼을때 일부 메시지 유실
- exactly once
- kafka - kafka workflow에서 사용 : 토픽을 읽고 그 결과를 토픽에 다시 기록할때 트랜잭션 api 사용가능
- kafka - external system에서 사용 : 멱등 컨슈머 사용해야함
- at least once (주로 사용됨)