스프링에서 카프카 찍먹해봤다가 cli로 kafka 다루려니까 헷갈림
Kafka는 대용량의 메시지를 빠르게 처리하고, 실시간 스트리밍 시스템에 자주 쓰이는 분산 메시지 큐
- 데이터를 ‘토픽(Topic)’이라는 논리적 단위로 관리
- 생산자(Producer)가 메시지를 보내고, 소비자(Consumer)가 메시지를 읽음
kafka-topics.sh 명령어 : 토픽 생성, 삭제, 조회
토픽 생성하기 (my-topic이라는 이름으로 파티션 3개, 복제본 1개 생성)
docker compose exec kafka1 \
kafka-topics.sh --create --topic \
my-topic --bootstrap-server localhost:19092 \
replication-factor 1 partitions 3 \
partition 1
kafka-console-consumer.sh 명령어 : 메시지 소비자(Consumer) 역할
--from-beginning 옵션은 토픽 처음부터 메시지 모두 읽기
실행 후, 생산자가 보내는 메시지를 실시간으로 확인 가능.
docker compose exec kafka1 \
kafka-console-consumer.sh \
--bootstrap-server localhost:19092 \
--topic my-topic \
--from-beginning
kafka-console-producer.sh 명령어 : 메시지 생산자(Producer) 역할
docker compose exec kafka1 \
kafka-console-producer.sh \
--bootstrap-server localhost:19092 \
--topic my-topic
producer 실행
consumer 실행 결과
key:value 형태로 담기
docker compose exec kafka1 \
kafka-console-producer.sh \
--bootstrap-server localhost:19092 \
--topic my-topic2 --property="parse.key=true" \
--property="key.separator=:"
key가 필요한 이유 => 파티셔닝 때문 (순서 보장)
partition1에 대해서만 컨슘해보자
docker compose exec kafka1 \
kafka-console-consumer.sh \
--bootstrap-server localhost:19092 \
--topic my-topic2 \
--from-beginning \
--partition 1
3개의 값만 들어온 것을 확인, 나머지 값은 partition2,3에 나눠져서 들어감
이때 key 4,6,10의 값은 무조건 partition1에 들어간다. (comsumer는 배정받은 파티션만 읽음)
key 4에 대해 다른 값을 produce하면
partition1에서 그대로 comsume 하는 것을 확인!
'Back-end' 카테고리의 다른 글
[Docker] MySQL 포트 충돌 에러 해결 방법 (0) | 2025.06.18 |
---|---|
Spring Security에서 RedisSerializer를 사용하면 생기는 문제점 (0) | 2024.08.20 |
JWT secret key 생성 방법 (0) | 2024.07.27 |