-
[Kafka] 터미널에서 카프카 토픽 생성, 발행, 컨슘하기[IT] 공부하는 개발자/Open Source 2020. 5. 7. 20:45
목차
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
이전 글 보기
2020/04/11 - [[IT] 공부하는 개발자/Open Source] - [Kafka] 카프카란? 개념과 디자인
'[IT] 공부하는 개발자 > Open Source' 카테고리의 다른 글
Groovy Spock 을 쓰는 이유, 코드 작성 예시 소개 (0) 2021.02.15 logstash 'unknown setting *** for jdbc' 에러 메시지 (0) 2020.12.07 [엘라스틱서치] ElasticSearch & 키바나 시큐리티 기능 구현 (0) 2019.09.08 [도커 + 엘라스틱서치] Docker로 ElasticSearch ELK 스택 디플로이 (0) 2019.08.26 [ElasticSearch 엘라스틱서치] 멀티 필드 맵핑, 정렬과 검색을 동시에 (2) 2019.08.21