Development/Kafka

2. CLI에서 실습

DevKTak 2025. 8. 30. 17:18

토픽 생성

# 토픽 생성
# bin/kafka-topics.sh --bootstrap-server <kakfa 주소> --create --topic <토픽명> 
$ bin/kafka-topics.sh \
	--bootstrap-server localhost:9092 \
	--create \
	--topic email.send

토픽  조회

# 토픽 전체 조회
# bin/kafka-topics.sh --bootstrap-server <kakfa 주소> --list
$ bin/kafka-topics.sh \
	--bootstrap-server localhost:9092 \
	--list

# 특정 토픽 세부 정보 조회
# bin/kafka-topics.sh --bootstrap-server <kakfa 주소> --describe --topic <토픽명> 
$ bin/kafka-topics.sh \
	--bootstrap-server localhost:9092 \
	--describe --topic email.send

토픽 삭제

# 토픽 삭제
# bin/kafka-topics.sh --bootstrap-server <kafka 주소> --delete --topic <토픽명>
$ bin/kafka-topics.sh \
	--bootstrap-server localhost:9092 \
	--delete --topic email.send

# 잘 삭제됐는 지 확인하기
$ bin/kafka-topics.sh \
	--bootstrap-server localhost:9092 \
	--list

Kafka의 특정 토픽에 메시지 넣기(프로듀서 역할)

# email.send라는 토픽에 메시지 넣기
$ bin/kafka-console-producer.sh \
	--bootstrap-server localhost:9092 \
	--topic email.send

# 위 명령어 입력 후 넣을 메시지 내용 입력하고 Enter 누르기
hello1
hello2
hello3

# 입력 다 했으면 Ctlr + c로 입력 상태 종료하기

Kafka에서 메시지 조회하기

* 전통적인 메시지 큐(RabbitMQ, SQS)는 메시지를 꺼내서 읽어들이면 해당 메시지를 큐에서 제거하는 구조.

Kafka는 메시지를 읽기만하고 제거하지 않는 방식으로 작동하기때문에 같은 메시지를 여러 번 읽는게 가능하다.

# email.send라는 토픽에 있는 메시지 꺼내기
$ bin/kafka-console-consumer.sh \
	--bootstrap-server localhost:9092 \
	--topic email.send \
	--from-beginning
  • --from-beginning: 토픽에 저장된 가장 처음 메시지부터 출력해온다.
[용어 정리]
- 컨슈머: 카프카의 메시지를 처리하는 주체
- 컨슈머 그룹: 1개 이상의 컨슈머를 하나의 그룹으로 묶은 단위
- 오프셋: 메시지의 순서를 나타내는 고유 번호 (0부터 시작)

컨슈머 그룹을 지정해서 메시지 읽기

# 컨슈머 그룹을 활용해 메시지 조회하기
$ bin/kafka-console-consumer.sh \
	--bootstrap-server localhost:9092 \
	--topic email.send \
	--from-beginning \
	--group email-send-group
  • --group 그룹명: 기존에 해당 컨슈머 그룹이 없었다면 생성하고 몇 번째까지 읽었는 지 오프셋 번호로 저장해둔다.
  • --from-beginning (--group 옵션과 같이 사용했을 경우): 컨슈머 그룹의 오프셋 기록이 없으면 첫 메시지부터 읽고 오프셋 기록이 있으면 그 이후 오프셋(인덱스)부터 메시지를 읽는다.

컨슈머 그룹 생성 확인

# 컨슈머 그룹 전체 조회하기
$ bin/kafka-consumer-groups.sh \
	--bootstrap-server localhost:9092 \
	--list

특정 컨슈머 그룹 세부 정보 조회

# 컨슈머 그룹 세부 정보 조회하기
$ bin/kafka-consumer-groups.sh \
	--bootstrap-server localhost:9092 \
	--group email-send-group \
	--describe

- 예) CURRENT-OFFSET이 4면 해당 그룹의 인덱스 0~3까지 읽었고 다음 읽을 오프셋은 4라는 의미

컨슈머 그룹 삭제

# 컨슈머 그룹 삭제
$ bin/kafka-consumer-groups.sh \
--bootstrap-server localhost:9092 \
--delete \
--group email-send-group
# 잘 삭제됐는 지 확인하기
$ bin/kafka-consumer-groups.sh \
--bootstrap-server localhost:9092 \
--list

 

'Development > Kafka' 카테고리의 다른 글

3. Spring Boot 실습  (0) 2025.08.30
1. 카프카와 환경셋팅  (1) 2025.08.30