producer?
데이터를 생산 및 kafka 클러스터 내의 특정 topic에 데이터를 보내는 역할
( kafka는 이 데이터를 저장 및 여러 파티션에 분산 저장)
- 특정 topic에 메시지를 보내고, 이는 kafka 로그에 기록되며, 나중에 consumer가 이를 가져갈 수 있다.
- 토픽의 어떠한 파티션에 보낼지 결정
- 데이터 복제시 성공적으로 이루어졌는지 확인하며 아닐시 재시도
- at most once: 한 번 전송을 시도하지만 실패 시 재시도하지 않음.
- at least once: 메시지를 반드시 한 번 이상 전송하며, 실패 시 재시도
- exactly once: 중복 없이 한 번만 전송되는 보장 모드로, Kafka가 제공하는 강력한 기능
동작과정
- Producer가 Kafka 브로커에 연결하여 데이터를 전송.
- Producer는 데이터를 토픽 내의 특정 파티션으로 보냄.
- Kafka 브로커는 메시지를 로그에 기록하고, 복제 설정에 따라 다른 브로커로 복제.
- 전송이 완료되면 Producer는 성공 여부를 응답받음.
consumer?
consumer는 kafka의 특정 토픽으로부터 메시지를 읽어 들인다.
consumer는 msg를 처리한다. 그리고 이를 메시지의 offset을 kafka에 커밋하여 다음 메시지를 이어서 받을 준비를 한다.
- 카프카에서 메시지는 각 파티션에 순차적으로 저장되며, consumer는 각 파티션에서 마리막으로 처리한 메시지의 위치를 나타내는 오프셋을 카프카에 기록해서 이후 메시지를 이어서 처리 가능
- 재시도 및 오류처리
동작과정
- Consumer가 Kafka 브로커에 연결하여 특정 토픽의 파티션에 있는 메시지를 가져온다.
- Consumer는 메시지를 처리한 후, 해당 메시지의 오프셋을 커밋하여 이후 메시지를 이어서 받을 수 있게 한다.
- Consumer가 컨슈머 그룹에 속해 있는 경우, Kafka는 각 파티션을 하나의 Consumer에게만 할당하여 데이터를 병렬로 처리할 수 있게 한다.
- 메시지를 처리한 후, 필요한 경우 오프셋을 수동으로 커밋하거나 자동으로 관리한다.
consumer의 auto.offet.reset
- consumer가 topic에 처음 접속하여 msg를 가져올때 가장 오래된 처음 offset부터(earliest) 가져올지, 가장 최근인 마지막 offset부터 가져올지 결정한다.
- ex) kafka-console-consume명령어를 쓸때 --from-beginning을 써야만 auto.offset.reset이 earlist로 결정됨.
- auto.offsest.reset은 lastest로 결정됨. 즉, 마지막 offset부터 읽음
kafka의 콘솔 프로듀서 실행하기
kafka-console-producer --bootstrap-server ipAddr:Port --topic -test-topic
- kafka-console-producer: 카프카에서 제공하는 콘솔 프로듀서 도구다. 이를 사용하면 터미널에서 바로 메시지를 전송.
- --bootstrap-server ipAddr:Port: 카프카 클러스터의 주소를 지정
- --topic 메시지받는_토픽 : 해당 토픽에 메시지 전송. 여기서는 -test-topic에 전송한다.
kafka의 콘솔 컨슈머 실행하기
kafka-console-consumer --bootstrap-server ipAddr:Port --topic -test-topic
- 설정한 topic의 메시지를 읽는다.
- --from-beginning
- default는 lastest


'리눅스 > kafka' 카테고리의 다른 글
| kafka에서 여러개의 partition을 가지는 msg 전송 (0) | 2024.10.11 |
|---|---|
| kafka에서 message를 전송하는 과정 (0) | 2024.09.21 |
| kafka producer의 객체 직렬화(object serialization) (0) | 2024.09.10 |
| kafka topic (0) | 2024.09.03 |
| 카프카 설치 ( Confluent kafka install ) (1) | 2024.09.01 |