트러블 슈팅 : Kafka 리스너(컨슈머)가 Kafka 서버에서 데이터를 읽지 못하는 문제 발생 및 해결

song yuheon·2023년 10월 31일
0

Trouble Shooting

목록 보기
48/57

문제 상황


Kafka 서버로 프로듀서가 데이터를 전송하는 것은 성공하였으나
Kafka 리스너가 Kafka 서버에서 데이터를 읽지 못하는 상황이 발생했습니다.
이 문제는 @KafkaListener 애노테이션을 사용하여 Kafka 메시지를 수신하는 Spring Boot 어플리케이션에서 나타났습니다.


문제 분석


문제의 핵심 원인은 Kafka 리스너에서 containerFactory 설정을 누락한 것이었습니다.
containerFactory는 Kafka 리스너가 사용할 ConsumerFactory와 관련 설정을 정의하는 데 사용됩니다.
이 설정을 제대로 지정하지 않으면, Spring Boot는 기본적으로 로컬 환경에 맞게 구성된 containerFactory를 사용하게 됩니다.
이 경우, Kafka 리스너는 실제 Kafka 서버가 아닌 로컬 서버에서 데이터를 읽으려 시도하게 되며, 결과적으로 데이터를 제대로 수신하지 못하게 됩니다.


문제 해결 과정


  1. 원인 파악

    에러 로그와 설정을 분석하였더니 컨슈머가 카프카 서버를 로컬 서버로 인식한다는 점을 발견했습니다.
    이를 통해 문제가 containerFactory 설정과 관련이 있다는 것을 파악했습니다.

  1. 설정 검토

KafkaConfig 클래스를 검토하여 ConsumerFactory를 정의하는 메소드가 존재하는지 확인했습니다.
또한, 이 ConsumerFactory를 사용하여 containerFactory를 생성하고, 이를 Kafka 리스너에서 참조하고 있는지 확인했습니다.

  1. 문제 해결
    KafkaConfig 클래스에 있는 containerFactory를 생성하는 메소드를 @KafkaListener 애노테이션의 containerFactory 속성을 통해 명시적으로 참조하도록 설정했습니다.


테스트


설정 변경 후 Kafka 리스너가 실제 Kafka 서버에서 데이터를 제대로 읽을 수 있는지 테스트하여 문제가 해결되었는지 확인했습니다.


profile
backend_Devloper

0개의 댓글