본문 바로가기

Golang

Golang Docker Kafka 프로그램

728x90
반응형

있는 그대로 고랭과 도커를 사용하여 kafka 를 사용한 pub-sub 구조 프로그램을 만들어보려고 한다.

지금 하는 프로젝트에서 필요하기 때문에 과제로 받았다.

 

* go 1.18 ver, java14로 실습했습니다. 

 

제목을 써보니 핫한 기술 다 때려박은 느낌이다. 사실이긴한데 내가 쓸내용은 핫하지 않다..

각설하고

 

순서를 정리하면 이렇다.

1. kafka 다운받기&config 맞추기

 

일단 아래 깃 src를 클론받는다.

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

 

정상적으로 다운로드가 되면 root dir에 kafka-docker 라는 폴더가 생성된다. 

그러고 나서 vi로 docker-compose-single-broker.yml 파일을 수정해준다. 

 

vi docker-compose-single-broker.yml
version: '2'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
  kafka:
    build: .
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1
      KAFKA_CREATE_TOPICS: "test:1:1"
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

위는 수정한 내용이다. KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1 로 수정해준다. (로컬호스트)

 

 

2. docker로 kafka 띄우기

kafka 설치를 완료했으면 프로세스를 docker에 띄우면 된다

docker-compose -f docker-compose-single-broker.yml up -d

위 명령어를 실행하면 프로세스가 도커에 띄워진다. 

docker ps

위 명령어로 제대로 띄워졌는지 확인해봐야한다.

 

 

3. 로컬pc에 kafka 다운받기

wget으로 받을 수 있으나 뭐가 잘 안되길래 그냥 파일 다운받아서 압축을 풀었다. 

http://mirror.navercorp.com/apache/kafka/2.8.1/

 

Index of /apache/kafka/2.8.1

 

mirror.navercorp.com

 

위에서 5번째인 kafka_2.13-2.8.1.tgz를 다운받으면 된다. 

 

다운받고  root dir로 옮기고 난 후 압축을 풀어준다. 

tar -xvf kafka_2.13-2.8.1.tgz

위 명령어로 압축을 풀어주고 생성된 폴더로 이동한다. 

 

이 다음이 producer와 subscriber를 생성하는 과정인데, java가 깔려있지 않으면 실행이 되지 않는다. 

 

 

3-1. Java 다운

go발자 이기 때문에 자바가 깔려있지도 않아서 이번에 깔았다. 

mac 환경이기 때문에 그냥 brew로 깔아봤다. brew 너무 좋음..

 

brew tap adoptopenjdk/openjdk
brew search jdk
brew install --cask adoptopenjdk14
java --version

자바 8버전 이상이기만하면 카프카 돌아간다길래 그냥 무난하게 14버전을 깔았다. 

버전확인이 되면 맞게 깔렸다는 뜻이기 때문에 저기까지 해보는게 좋다. 

 

4. 토픽생성

아까 다운받은 kafka파일을 다운받은 폴더로 이동해서 작업한다. 

 

test-topic이라는 이름으로 토픽을 생성하는 코드이다. 

cd kafka_2.13-2.8.1
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test_topic

 

5. producer, consumer 콘솔띄워 확인

./kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test
./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test

각각 다른 창에서 위 명령어를 실행한다. 

그러면 메시지를 주고 받는 콘솔창이 띄워지고 실제 메시지를 주고 받는것을 확인할 수 있다. 

 

 

위에가 producer, 아래가 consumer이다. 

잘됨.

 

다써보고 나니 고랭으로 짠 로직은 들어가지도 못했다. 이어서 작성하도록하겠다. 

728x90
반응형

'Golang' 카테고리의 다른 글

Golang Docker-Kafka 프로그램 2  (0) 2022.04.05
What is gRPC?  (0) 2021.11.15