본문 바로가기
BIG-DATA/KAFKA

[KAFKA] 무작정 시작하기 (4) - Topic & Producer & Consumer 실행

by 허도치 2019. 11. 21.

2019/11/19 - [BIG-DATA/KAFKA] - [KAFKA] 무작정 시작하기 (1) - 설치 & 실행

2019/11/20 - [BIG-DATA/KAFKA] - [KAFKA] 무작정 시작하기 (2) - Zookeeper 설정

2019/11/20 - [BIG-DATA/KAFKA] - [KAFKA] 무작정 시작하기 (3) - Kafka 설정

 

지난 포스트까지해서 Kafka 서버를 성공적을 실행시켜 보았다. 서버를 이용하려면 클라이언트가 있어야하지 않겠는가. Kafka에는 Producer와 Consumer라는 클라이언트가 있다. Producer는 메시지를 Topic에 적재하며, Consumer는 topic에 적재된 메시지를 소비한다. 이번 포스트에서는 Topic을 생성하고 여기에 메시지를 적재하는 Producer와 이를 소비하는 Consumer를 생성해보겠다.

 

 

1. 사전 준비

   1-1. Zookeeper 서버 실행.

   1-2. Kafka 서버 실행.

   1-3. 환경변수선언를 입력한 Console 창.

1
2
SET JAVA_HOME=C:\work\kafka_2.12-2.1.0\java\jdk-11.0.5
SET KAFKA_HOME=C:\work\kafka_2.12-2.1.0
cs

         - 반드시 선언해야하는 것은 아니므로 개발 환경에 따라 선언하길 바람.

 

 

2. Topic 생성

   2-1. Toipc 생성 스크립트 실행

1
2
rem Topic 생성
%KAFKA_HOME%/bin/windows/kafka-topics.bat --create --zookeeper "localhost:2181" --replication-factor 1 --partitions 3 --topic "local-topic"
cs

         - replication-factor의 수는 Broker의 수 보다 작거나 같아야 함. 현재 Broker가 1개이므로 1로 설정.

  

   2-2. Topic 생성 확인

1
2
rem Topic 목록 확인
%KAFKA_HOME%/bin/windows/kafka-topics.bat --list --zookeeper "localhost:2181"
cs

 

3. Producer & Consumer 실행 테스트

   3-1. Producer 실행

1
2
rem Producer 실행
%KAFKA_HOME%/bin/windows/kafka-console-producer.bat --broker-list "localhost:9092" --topic "local-topic"
cs

         - 새로운 Console을 열고 스크립트를 실행.

         - 정상적으로 접속이 되었다면 프롬프트가 [ > ]로 바뀌면서 입력할 수 있게 바뀜.

         - 이제 메시지를 입력하면 Broker로 보내지며 지정한 Topic으로 메시지가 분류됨.

 

   3-2. Consumer 실행

1
2
rem Consumer 실행
%KAFKA_HOME%/bin/windows/kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic "local-topic"
cs

         - 새로운 Console을 열고 스크립트를 실행.

         - 정상적으로 접속이 되었다면, 화면에 아무런 변화가 없으며 Producer가 메시지를 발송하면 반응하게 됨.

 

   3-3. 메시지 Write / Read 테스트

         - Producer에서 메시지를 작성해보자, Consumer에 입력한 메시지가 나타날 것이다.

 

 

 

  지금까지 Topic을 생성하고 Producer와 Consumer를 실행하여 메시지도 주고 받아보았다. 이전 포스트에서 Zookeeper와 Kafka를 따라서 잘 설정했다면 문제없이 잘 실행되는 것을 확인할 수 있을 것이다. 개발용으로 로컬에서 간단하게 사용한다면 지금처럼 설정해놓고 사용해도 무방하지만, 외부에서 접속하려면 아무래도 보안에 취약할 수 밖에 없다.

  다음 포스트에서는 사용자 인증을 통해 접속할 수 있도록 보안을 강화하는 내용을 다루어 보겠다.

댓글