Spring Boot 기반 Kafka Producer/Consumer 예제 프로젝트
이 프로젝트는 Spring Boot와 Spring Kafka를 사용하여 Kafka 메시지 송수신을 구현한 예제입니다. REST API를 통해 메시지를 발행하고, Consumer가 자동으로 메시지를 수신하여 처리합니다.
- Producer Factory 및 KafkaTemplate 빈 설정
- 기본 토픽 "topic" 생성 (파티션 1개, 복제 팩터 1)
- Kafka 브로커:
localhost:9092
- KafkaTemplate을 사용한 메시지 발행
- String 타입의 key/value 메시지 전송
- @KafkaListener를 사용한 메시지 수신
- 토픽: "topic"
- Consumer Group: "my-group"
- 수신된 메시지를 콘솔에 출력
- POST /api/kafka/send: 메시지 발행 API
- Message 객체를 JSON으로 변환하여 Kafka로 전송
- Request Body 예시:
{ "id": 1, "message": "Hello Kafka" }
- 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 # 메시지 엔티티
- Java 17+
- Gradle 8.x
- Docker & Docker Compose
# Kafka 시작
docker-compose up -d
# 로그 확인
docker-compose logs -f kafka
# 중지
docker-compose down# 빌드
./gradlew build
# 실행
./gradlew bootRun