Kafka 실습 - 1

최명진·2025년 2월 20일

메시지큐란. 프로세스/서비스 간에 비동기적으로 메시지를 주고받을 수 있게 하는 미들웨어
프로듀서 -> 큐 -> 컨슈머 구조로, 메시지는 순차적으로 순차되며, 먼저 들어간게 먼저 나오는 FIFO 방식
(서비스 간 결합도 감소 (MSA), 비동기 처리로 성능 향상, 시스템의 확장성 증가, 트래픽 처리가 용이)

프로듀서란 메시지를 생성하여 큐에 전송하는 입장.
큐는? 메시지가 저장되는 버퍼로 FIFO 방식으로 처리되며 메시지 지속성이 보장된다.
컨슈머란 큐에서 메시지를 가져와서 병렬로 처리가 가능하며, 실패 시에 재처리가 가능
메시지는 순서를 보장하며, 우선순위를 정할 수 있다(큐)

Kafka로 먼저 실습 진행

version: '3'
services:
  zookeeper:
    image: confluentinc/cp-zookeeper:latest
    container_name: zookeeper
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000
    ports:
      - "2181:2181"
    networks:
      - kafka-net

  kafka:
    image: confluentinc/cp-kafka:latest
    container_name: kafka
    depends_on:
      - zookeeper
    ports:
      - "9092:9092"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
    networks:
      - kafka-net

  kafka-ui:
    image: provectuslabs/kafka-ui:latest
    container_name: kafka-ui
    depends_on:
      - kafka
    ports:
      - "8989:8080"
    environment:
      KAFKA_CLUSTERS_0_NAME: local
      KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:9092
      KAFKA_CLUSTERS_0_ZOOKEEPER: zookeeper:2181
    networks:
      - kafka-net

networks:
  kafka-net:
    driver: bridge

docker.compose.yml

#컨테이너 실행
docker-compose up -d

#컨테이너 상태 확인
docker-compose ps

#로그 확인
docker-compose logs -f kafka

정상적으로 설치 및 기동 완료

#Kafka 컨테이너 접속
docker exec -it kafka bash

토픽 생성 및 목록, 상세 정보 확인

#토픽 생성
kafka-topics --create \
--topic email-topic \
--bootstrap-server localhost:9092 \
--partitions 1 \
--replication-factor 1

#토픽 목록 확인
kafka-topics --list \
--bootstrap-server localhost:9092

email-topic 이라는 이름으로 토픽이 생성되었음을 확인

#토픽 상세정보 확인
kafka-topics --describe \
--topic email-topic \
--bootstrap-server localhost:9092

#메시지 생산
kafka-console-producer \
--topic email-topic \
--bootstrap-server localhost:9092

#메시지 소비
kafka-console-consumer \
--topic email-topic \
--from-beginning \
--bootstrap-server localhost:9092

profile
주니어 백엔드 개발자 Choi입니다.

0개의 댓글