728x90
반응형
1. Docker 및 Docker compose 설치
Docker | 시작하기 :: 티포의개발일지 (tistory.com)
Docker | Docker-Compose :: 티포의개발일지 (tistory.com)
2. Kafka 설치
docker-compose.yaml 파일을 생성한다.
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper
container_name: zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
container_name: kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- 설명
version: '2' //docker-compose 버전 지정
services: //docker-compose의 경우 docker 컨테이너로 수행될 서비스들은 services 하위에 기술
zookeeper: //서비스 이름. service 하위에 작성하면 해당 이름으로 동작
image: wurstmeister/zookeeper //도커 이미지
container_name: zookeeper
ports: //외부포트:컨테이너내부포트
- "2181:2181"
kafka:
image: wurstmeister/kafka
container_name: kafka
ports: //외부포트:컨테이너내부포트
- "9092:9092"
environment://kafka 브로터를 위한 환경 변수 지정
KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 //kafka가 zookeeper에 커넥션하기 위한 대상을 지정
volumes:
- /var/run/docker.sock:/var/run/docker.sock
아래 명령어를 실행한다.
$ docker-compose up -d
Docker Desktop으로 확인해본다.
3. Kafka 테스트
생성된 Kafka Container에 접속한다.
$ docker container exec -it kafka bash
토픽을 생성한다.
# kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1
프로듀서를 실행한다.
// # bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic
# kafka-console-producer.sh --broker-list localhost:9092 --topic pro-topic
컨슈머를 실행한다.
# kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning
토픽 목록을 조회한다.
# kafka-topics.sh --list --bootstrap-server localhost:9092
토픽을 삭제한다.
# kafka-topics.sh --delete --topic test-topic --bootstrap-server localhost:9092
Zookeeper를 사용하지 않고 Docker Contrainer 쓰는 법
kafka:
image: bitnami/kafka:3.4
container_name: kafka
ports:
- "9092:9092"
environment:
- ALLOW_PLAINTEXT_LISTENER=yes
- KAFKA_BROKER_ID=1
- KAFKA_CFG_PROCESS_ROLES=broker,controller
- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
- KAFKA_CFG_LISTENERS=CONTROLLER://:9093,PLAINTEXT://:9092
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
- KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR=1
- KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka:9093
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092
- KAFKA_CFG_DELETE_TOPIC_ENABLE=true
- KAFKA_CFG_BROKER_ID=1
- KAFKA_CFG_NODE_ID=1
- KAFKA_ENABLE_KRAFT=yes
- TZ=Asia/Seoul
728x90
반응형
'Back-End > Spring Boot' 카테고리의 다른 글
Spring boot | Spring Apache Kafka 사용법 ( with Docker Container ) | Consumer (0) | 2023.03.02 |
---|---|
Spring boot | Spring Apache Kafka 사용법 ( with Docker Container ) | Producer (0) | 2023.03.02 |
Spring boot | Jacoco로 테스트 커버리지 확인하기 (0) | 2023.02.23 |
Spring Boot | MockMvc with Spring Security and RestDocs (0) | 2023.02.21 |
Spring Boot | Mysql 연동하는 방법 (0) | 2022.11.03 |