있는 그대로 고랭과 도커를 사용하여 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/
위에서 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이다.
잘됨.
다써보고 나니 고랭으로 짠 로직은 들어가지도 못했다. 이어서 작성하도록하겠다.
'Golang' 카테고리의 다른 글
Golang Docker-Kafka 프로그램 2 (0) | 2022.04.05 |
---|---|
What is gRPC? (0) | 2021.11.15 |