[Apache Kafka] 설치와 Client(Producer/Consumer) 간 Message 교환

2024. 1. 5. 10:35
반응형

 

해당 포스팅에서는 Kafka를 설치하고, CLI를 통해 Publisher, Consumer 간의 메시지 교환을 확인해보려고 한다.

 

Kafka에 대한 대략적인 개념은 해당 포스팅에 작성하였으므로 참고하면 좋을 것 같다.

https://sjh9708.tistory.com/151

 

[Apache Kafka] Kafka의 주요 개념과 구성 요소

Apache Kafka는 데이터의 실시간 스트리밍 및 이벤트 처리에 유용한 도구로서 활용된다. Kafka는 대규모 분산 시스템에서 안정적이고 확장 가능한 메시지 큐와 이벤트 스트리밍 플랫폼으로 사용되

sjh9708.tistory.com

 

 

 

 


Kafka Server 설치

 

 

https://kafka.apache.org/downloads

 

Apache Kafka

Apache Kafka: A Distributed Streaming Platform.

kafka.apache.org

 

해당 공식 사이트에서 Kafka를 다운로드 받아보자.

 

 

 

 

압축을 해제하면 다음과 같은 폴더 구조가 보일텐데, 대략적인 내용은 아래와 같다.

  1. bin: Kafka 실행 파일들이 들어있는 폴더. 주요 실행 파일들은 kafka-server-start.sh, kafka-console-producer.sh, kafka-console-consumer.sh 등이 있다. 각각은 Server(클러스터 및 브로커) 실행, Client(Producer & Consumer) 실행을 뜻한다.
  2. config: Kafka 설정 파일들이 들어있는 폴더. 주요 설정 파일은 server.properties로, Kafka 브로커의 구성 설정 파일이다.
  3. data: Kafka 브로커의 데이터 디렉토리. 데이터와 로그 파일이 저장되는 곳이며 브로커가 저장하는 토픽 메시지의 Offset이 여기에 저장된다.

 


Kafka Server 실행

 

 

우선 Kafka 설치 디렉터리 아래의 bin으로 이동해보자. 실행파일이 모여져 있는 것을 확인할 수 있다.

여기서 우리는 Kafka Server를 실행시키고, Broker들의 Coordinator인 Zookeeper를 함께 구동해야 한다.

 

 

 

두 개의 터미널을 열어 Kafka의 루트 디렉터리로 이동해서 실행시켜보자.

 

 

./bin/zookeeper-server-start.sh ./config/zookeeper.properties
./bin/kafka-server-start.sh ./config/server.properties

 

 

Zookeeper와 서버 실행을 확인하고, 창을 닫지 않고 실행해둔 채로 이어서 Kafka의 기능들을 살펴보도록 하자.

 

 

 

 


Topic 생성

 

Topic은 메시지를 구분하기 위한 카테고리화된 주제이자 Producer가 메시지를 발행하는 곳이며, Consumer는 특정 토픽에서 메시지를 소비한다고 하였다.

이제 Kafka 서버에 Topic을 생성해보자.

 

Topic 생성하기

./bin/kafka-topics.sh --bootstrap-server localhost:9092 \ 
 --create --topic quickstart-events partitions 1
 
# ./bin/kafka-topics.sh --bootstrap-server localhost:[YOUR_BOOTSTRAP_PORT] \
# --create --topic [YOUR_TOPIC_NAME] partitions [YOUR_PARTITION]

 

 

 

Kafka 토픽 관리 도구인 kafka-topics.sh 스크립트를 실행한다. 

  • --bootstrap-server localhost:9092: Kafka 클러스터에 연결할 때 사용할 부트스트랩 서버의 주소를 지정합니다. 이 부트스트랩 서버를 통해 다른 Kafka 브로커들을 찾고 통신한다. 서버를 실행할 때 디폴트 포트는 9092로 지정되어 있다.
  • --create: 새로운 토픽을 생성한다. 함께 quickstart-events라는 이름을 지정해주었다.
  • --partitions: 토픽이 갖게 될 파티션 수를 지정

 

Topic 리스트 보기

./bin/kafka-topics.sh --bootstrap-server localhost:9092 --list

 

 

Topic 정보 확인하기

./bin/kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic quickstart-events

 

 

 

 

 


Producer와 Consumer 클라이언트 실행

 

이제 생성한 토픽에 대해서 메시지를 발행하고, 이를 구독할 클라이언트들을 실행시켜보도록 하자.

 

 

Producer 실행

 

./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic quickstart-events

 

메시지를 생성하고 해당 메시지를 특정 토픽으로 보내는 콘솔 프로듀서를 실행한다.

--broker-list은 메시지를 보낼 Kafka 브로커의 목록을 지정한다. 로컬에서 실행 중인 Kafka 브로커에 연결하였다.

--topic에 메시지를 어느 토픽에 보낼 지 지정한다.

 

 

 

Consumer 실행

 

./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 \
--topic quickstart-events —from-beginning

 

메시지를 소비하는 콘솔 컨슈머를 실행한다.

from-beginning은 토픽의 처음부터 메시지를 소비하도록 지정한다 이 옵션을 사용하면 토픽에 저장된 모든 이벤트를 소비한다.

 

 

 

 


Message 발행과 소비 테스트

 

 

위 과정을 잘 거쳤다면 사진처럼 Kafka Server, Zookeeper, Consumer Client, Producer Client가 준비되어 있을 것이다.

이제 Consumer에서 해당 Topic에 대한 Message를 보내고, Producer가 이를 잘 소비하는지 확인해보자.

 

 

Producer에서 다음과 같은 메시지를 보내보았다.

 

Consumer에서 메시지를 소비하여 가져온 것을 확인할 수 있다.

 

 

 

 

 

 

반응형

BELATED ARTICLES

more