유튜브블로그Top 10
내 프로필

데브허브 안내
소개업데이트 소식

데브허브 커뮤니티

Kafka 입문·실전 - 3.2. [실습] Spring Boot로 Kafka에서 재시도조차 실패한 메시지를 따로 보관하기 (DLT, Dead Letter Topic)

JSCODE 박재성

2025. 8. 1.

0

#backend
#devops
  • 카프카에서 메시지 처리 실패 시 재시도 정책에도 불구하고 실패하는 메시지를 DLT(Dead Letter Topic)에 보관하여 유실을 방지하고 후속 조치를 가능하게 함 🛡️
  • DLT는 오류로 인해 처리할 수 없는 메시지들을 임시로 저장하는 토픽으로, 재시도 실패 메시지를 저장하여 데이터 유실을 막고 원인 분석 및 수동 재처리 기회를 제공함 🔍
  • 스프링 카프카의 @RetryableTopic 어노테이션을 사용하면 DLT 토픽 자동 생성 및 메시지 보관 기능이 기본적으로 설정됨 ⚙️
  • DLT 토픽 이름은 기본적으로 '기존 토픽명-DLT' 형태로 생성되지만, DLTTopicSuffix 옵션을 통해 일관된 토픽명 규칙을 설정할 수 있음 🏷️
  • 컨슈머 서버에서 메시지 처리 실패 시 설정된 재시도 횟수만큼 재시도 후에도 실패하면 DLT 토픽에 메시지를 보관함 🔄
  • DLT 토픽에 보관된 메시지는 관리자가 수동으로 확인하여 원인 분석, 디버깅, 수정 후 재처리 등의 조치를 취할 수 있음 👨‍💻
  • kafka-console-consumer.sh 명령어를 사용하여 DLT 토픽에 저장된 메시지를 조회하고 확인할 수 있음 📜
  • 재시도 로직에서 사용하는 임시 토픽들은 재시도 횟수 및 간격 설정에 따라 내부적으로 생성되며, DLT 토픽과는 별개임 ⏳
  • DLT에 저장된 메시지를 통해 컨슈머 서버 장애 발생 시, 장애 복구 후 DLT 토픽의 메시지들을 재처리하여 데이터 정합성을 유지할 수 있음 🛠️
  • DLT 활용은 사용자에게는 성공으로 보이지만 실제 실패한 작업을 관리하고, 데이터 유실 없이 안정적인 시스템 운영을 가능하게 함 ✅

Recommanded Videos