topic 구독하기
- topic을 구독하면, 컨슈머 그룹에 할당된 파티션에서 데이터를 읽는다.
- 레코드를 가져오기 위해 카프카 서버를 조사하는 과정을 폴 루프(poll loop)라 함
Consumer offset 위치
- kafka는 메시지 offset 을 보유하지 않는다.
- 각 consumer 는 자신의 consumer offset 을 유지한다.
- consumer API 를 사용해 유지됨
- 원하면 커스텀 로직을 작성하여 offset 커밋 가능
재연/되감기(rewind)/메시지 스킵
- consumer 는 consumer API를 사용해 topic 파티션에서 메시지를 읽을 시작 offset을 전달
- 파티션의 현재 offset 과 무관하게 처음부터 또는 특정 offset 부터 메시지 읽기 가능
- 메시지를 재연 또는 스킵 가능
heatbeat
- consumer group 리더(=broker)로 하트비트 신호를 주기적으로 보내야한다.
- consumer group 리더가 하트비트 수신 못할시, 파티션 소유권이 consumer 그룹 내 다른 consumer에게 다시 할당
offset 커밋
- partition offset 과 커밋 관리는 consumer 의 역할
- 카프카는 개별 consumer 의 메시지 offset 관리를 안함
- broker 성능 향상
- consumer 에서 시나리오에 따라 자신의 offset 을 유연하게 관리
- batch 처리 완료 후 commit 하거나,
- 매우 큰 batch 처리 중간에 rebalance 부작용을 줄이기 위해 커밋하기도 함
역직렬화 deserialization
- producer에서 메시지를 직렬화하였으므로 consumer 에서는 역직렬화하여 사용