☆IT 개발 프로그램☆/Open Source

[Kafka] 터미널에서 카프카 토픽 생성, 발행, 컨슘하기

호기심을 품고사는 중 2020. 6. 4. 15:10

목차

1. 카프카 설치

2. 토픽 생성

3. 프로듀서 실행 / 메시지 발행

4. 컨슈머 실행 / 메시지 컨슘


 

 

1. 카프카 설치

준비물 // Git, Docker 가 PC에 설치되어 있어야 한다.

 

먼저 깃으로 kafaka-docker를 설치한다.

$ git clone https://github.com/wurstmeister/kafka-docker

 


 

설치 후, config 파일을 연다. 로컬 PC를 카프카 브로커로 사용할 것이므로 environment 하위의 KAFKA_ADVERTISED_HOST_NAME 환경변수의 값을 아래처럼 바꾸어 주고, 토픽은 지운다. (토픽은 다음 단계에서 직접 생성할 것이다.)

vi kafka-docker/docker-compose-single-broker.yml


 

docker로 kafka를 실행한다. 꽤 오래 걸린다.

$ docker-compose -f kafka-docker/docker-compose-single-broker.yml up

 

카프카를 콘솔에서 실행할 수 있게 해주는 클라이언트를 다운로드하여 압축을 풀어준다.

$ brew install wget

$ wget http://apache.mirror.cdnetworks.com/kafka/2.4.1/kafka_2.12-2.4.1.tgz

$ tar -zxvf kafka_2.12-2.4.1.tgz

 


 

 

2. 카프카 토픽 생성

프로듀서와 컨슈머가 공유할 토픽을 생성한다.

$ {KAFKA_HOME}/bin/kafka-topics.sh --create --topic hello_world --zookeeper localhost:2181 --partitions 1 --replication-factor 1

 

hello_world 라는 이름의 토픽을 생성하였다. 토픽의 파티션, replication-factor는 늘릴 수도 있지만 개발 중 테스트 용도로 사용할 것이므로 최소로 하여 생성한다.

 


 

 

3. 프로듀서 실행 / 메시지 발행

 

$ {KAFKA_HOME}/bin/kafka-console-consumer.sh --topic hello_world --bootstrap-server localhost:9092

이제 토픽에 메시지를 발행할 프로듀서를 실행하여, 바로 메시지를 발행하여 본다.

2개의 메시지를 발행해 봤다.


 

4. 컨슈머 실행 / 메시지 컨슘

$ {KAFKA_HOME}/bin/kafka-console-consumer.sh --topic hello_world --bootstrap-server localhost:9092

 

아직 컨슘을 하지 않았기때문에 발행된 메시지들은 offset 2로 쌓여있을 것이다. 이제 발행했던 메시지들이 도착하는지 확인해 보자.

 


컨슈머를 실행하자마자 쌓여있던 메시지들이 도착했다. 이제 발행하는 메시지를 실시간으로 바로 받을수도 있다. 

 

컨슈머를 종료했다가 다시 실행했다. 이미 컨슘한 메시지들은 다시 보여주지 않고, 새로 발행한 메시지들을 컨슘한다. 


카프카 Quick Start로 메시지를 발행할 때의 단점은 메시지가 너무 길면 중간에 끊겨버린다는 것이다. 이럴 때는 미리 파일을 만들어 둔 후 파이프라인으로 파일을 출력하게 해 메시지를 publish 하면 된다.

 

$ cat file.json | {KAFKA_HOME}/bin/kafka-console-producer.sh --topic hello_world --broker-list localhost:9092