study/KAFKA
[Apache Kafka] terminal로 간단하게 producer와 consumer로 메세지 주고받기
김팥빵_
2025. 3. 26. 01:43
이 과정은 kafka가 정상적으로 동작하는지 테스트하는 용으로 수행되었다.
테스트는 아래와 같은 명령어 사용을 시작으로 한다.
root로 root권한을 얻을 수 있고(사용하지 않아도 무방하다), kafka-0은 kafka의 이름이다.
docker exec -it --user root kafka-0 /bin/bash
# 1. 현재 실행 중인 컨테이너 중단 및 제거
docker-compose down
# 2. 변경된 docker-compose.yml을 기반으로 새로 빌드 및 실행
docker-compose up --build -d
topic 생성하기
일단 메세지를 보낼 토픽을 만들어 보기로 했다.
$ bash# cd /opt/kafka/bin
$ bash# kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic <topic name>
- 오류가 나서 찾아보니 Kafka 3.0 이상 버전에서 --zookeeper 옵션이 제거되어서 사용할 수 없다고 한다.
- Kafka 3.0부터는 zookeeper 없이 KRaft(Kafka Raft) 모드가 기본 설정이라고 한다.
- Zookeeper 없이 토픽을 생성하려면 --bootstrap-server 옵션을 사용해야 한다.
- 그래서 다음과 같이 명령어를 바꿔 실행해보니 topic이 성공적으로 생성되었다.
$ bash# kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic <topic name>
$ bash# Created topic <topic name>.
Producer와 Consumer 실행하기
각각의 terminal에서 다음과 같은 명령어를 수행하면 각각 producer와 consumer를 실행할 수 있다.
# producer
$ bash# kafka-console-producer.sh --bootstrap-server localhost:9092 --topic <topic name>
> # 입력 후 Enter, 빠져나가려면 Ctrl+D
# cousumer
$ bash# kafka-console-consumer.sh --topic <topic name> --bootstrap-server localhost:9092 --from-beginning
여기서 producer에 메세지를 입력하면 consumer쪽 터미널에 전송된 메세지가 들어온다.
만약 어느쪽에 문제가 생긴다면 kafka가 정상적으로 돌아가지 않는 것이다.