Skip to content

kimjunyoung90/spring-kafka-examples

Repository files navigation

Spring Kafka Examples

Spring Boot 기반 Kafka Producer/Consumer 예제 프로젝트

프로젝트 개요

이 프로젝트는 Spring Boot와 Spring Kafka를 사용하여 Kafka 메시지 송수신을 구현한 예제입니다. REST API를 통해 메시지를 발행하고, Consumer가 자동으로 메시지를 수신하여 처리합니다.

주요 구현 내용

1. Kafka 설정 (KafkaConfig)

  • Producer Factory 및 KafkaTemplate 빈 설정
  • 기본 토픽 "topic" 생성 (파티션 1개, 복제 팩터 1)
  • Kafka 브로커: localhost:9092

2. Producer (KafkaProducer)

  • KafkaTemplate을 사용한 메시지 발행
  • String 타입의 key/value 메시지 전송

3. Consumer (KafkaConsumer)

  • @KafkaListener를 사용한 메시지 수신
  • 토픽: "topic"
  • Consumer Group: "my-group"
  • 수신된 메시지를 콘솔에 출력

4. REST API (KafkaController)

  • POST /api/kafka/send: 메시지 발행 API
  • Message 객체를 JSON으로 변환하여 Kafka로 전송
  • Request Body 예시:
    {
      "id": 1,
      "message": "Hello Kafka"
    }

5. 엔티티 (Message)

  • id: 메시지 ID
  • message: 메시지 내용

프로젝트 구조

src/main/java/com/example/
├── KafkaExampleApplication.java    # Spring Boot 메인 클래스
├── config/
│   └── KafkaConfig.java            # Kafka 설정
├── controller/
│   └── KafkaController.java        # REST API 컨트롤러
├── service/
│   ├── KafkaProducer.java          # 메시지 발행 서비스
│   └── KafkaConsumer.java          # 메시지 수신 서비스
└── entity/
    └── Message.java                # 메시지 엔티티

Requirements

  • Java 17+
  • Gradle 8.x
  • Docker & Docker Compose

Kafka 설정

Docker Compose로 Kafka 실행

# Kafka 시작
docker-compose up -d

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

# 중지
docker-compose down

Build & Run

# 빌드
./gradlew build

# 실행
./gradlew bootRun

About

spring-kafka를 활용한 producer, consumer 간단 구현 예제

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages