티스토리 뷰

#개요

이번 시간에는 Apache Kafka에서 Topic을 생성하고, 해당 토픽을 통해서 ProducerConsumer의 역할을 알아보려 합니다. 가장 기본적인 내용이지만, 가장 중요한 내용이기도 해서 최대한 열심히 정리해보겠습니다.


#Kafka 커맨드 정리

토픽 생성을 위한 커맨드를 미리 정리하고 실습을 진행하겠습니다. 해당 커맨드는 정리용이니 참고만 해주세요.

📄 Zookeeper 및 Kafka 서버 구동

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

 

$KAFKA_HOME 항목은 현재 KAFKA폴더위치입니다. zookeeperkafka server를 구동하는 커맨드 입니다.

Kafka는 Zookeeper 서버를 기반으로 동작되기 때문에 반드시 두개 다 실행을 시켜주세요.

📄 Topic 생성

$KAFKA_HOME/bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server loclahost:9092 \
           --partitions 1

해당 커맨드를 사용해서 quickstart-events 라는 이름의 topic을 생성하려합니다. 여기서 만들어 지는 topic을 통해서, ProducerConsumer가 메시지를 통신합니다. 여기서 partitions 옵션도 있는데 이는 후에 자세히 다뤄보겠습니다. 

📄 Topic 목록 조회

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

Topic의 목록을 조회합니다. 

📄 Topic 정보 조회

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

Topic의 정보를 조회합니다. 해당 Commandtopic 명이 필요합니다. 


#Kafka 서버 기동 

먼저 해야할 작업은 $KAFKA_HOME으로 이동하는 작업입니다. 저같은 경우 D:/kaka 밑에 있기 때문에 먼저 해당 디렉토리로 이동해 줄 예정입니다. 

그리고 앞서 말씀드린 Command를 입력해 보겠습니다. 다만 위에서 정리되어 있는 CmdWindows기반이 아닙니다. 그래서 조금 다른 형태로 작성해야합니다. 아무래도 Kafka를 사용하는 환경이 Linux인 경우가 많기에 지금은 테스트를 하는 상황이다! 라고 생각해주시면 될 것 같습니다.

windows를 위한 bat파일은 bin/windows에 있습니다. 

./bin/windows/zookeeper-server-start.bat ./config/zookeeper.properties
./bin/windows/kafka-server-start.bat ./config/server.properties

 

각 커맨드의 정상 실행 모습입니다.

# zookeeper-sever-start.bat

# kafka-sever-start.bat

그리고 저는 PowerShell을 이용중인데, 해당 커맨드 실행 시 헤드리스 모드가 아니기 떄문에, Shell 창이 2개가 필요합니다. 프로그램 끝나길 기다리면 안됩니다!!


#Kafka topic 생성 & Producer/Consumer 테스트

다음으로 해야하는 작업은 Topic을 생성하는 작업입니다. Shell 에서 해당 커맨드를 를 통해서 topic을 생성해줍니다. 

./bin/windows/kafka-topics.bat --create --topic quickstart-events --bootstrap-server loclahost:9092 --partitions 1

 

총 3개의 Shell에서 KafkaZookeeper가 정상 기동 중이고 하나는 토픽 생성 이후 역할이 없으니 Shell창을 한개 만 더  켜서, ProducetConsumer를 생성해봅시다. Shell은 Windows 자체 내부 어플리케이션 입니다. 개선된 Cmd라고 생각하시면 될 것 같네요. 

#Producer 실행

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

#Consumer 실행

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

해당 두 커맨드를 서로 다른 Shell을 통해서 실행시키면 다음과 같은 화면이 나옵니다. 

 

Producer에는 메시지를 생성할 수 있는 > 표시가 나오고 이때 원하는 단어를 입력해 줍니다.

저는 TEST hi Hello 라는 텍스트를 입력했습니다.

Consumer에서는 해당 메시지를 받아 옵니다.

쏙옙

하단에 제가 입력학 메시지가 보이시나요? 위에있는 메시지는 제가 테스트하면서 입력한거라 무시해주세요

ㅋㅋ 한글치면   쏙옙나오는거 뻘하게 웃기네요

이렇듯 ProducerConsumer는 메시지를 보내고, 메시지를 받는 역할을 맡고 있습니다.

마지막으로 Producer는 여러개의 Consumer에 메시지를 보낼 수 있다고 했던 거 기억나시나요?

#하나의 Producer에서 두개의 Consumer에 메시지 전송

보시는 것 처럼 동시에 두개의 Consumer에 메시지를 보낼 수 도 있습니다. 


마치며..

이번엔 Topic을 생성하고 ProducerConsumer를 통해서 메시지를 전송하고 전달 받는 과정을 거쳤습니다. 이번 실습을 통해서 Producer가 어떤 역할을 하고 Consumer는 어떤 역할을 하는지 감을 잡은 것 같네요. 다음 포스팅에서는 조금 더 심화된 내용을 가지고 돌아오겠습니다.

 

감사합니다.

-참고한 강의-

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4/dashboard

 

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) - 인프런 | 강의

Spring framework의 Spring Cloud 제품군을 이용하여 마이크로서비스 애플리케이션을 개발해 보는 과정입니다. Cloud Native Application으로써의 Spring Cloud를 어떻게 사용하는지, 구성을 어떻게 하는지에 대해

www.inflearn.com

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함