kafka를 활용해서 채팅을 구현하기 전에 카프카에 대한 간단한 예제로 연습하려고 하였으나 다음과 같은 에러가 발생하였습니다 ㅠㅠ
에러발생
org.springframework.context.ApplicationContextException: Failed to start bean 'org.springframework.kafka.config.internalKafkaListenerEndpointRegistry'
해당 에러는 Kafka 설정에서 문제가 발생했다는 에러라고 한다.
즉, Kafka Config 파일에서 문제가 있어서 발생한 에러이다.
해결
제일 먼저 도커로 실행하고 있는 카프카와 주키퍼 상태를 확인했다.
kafka, zookeeper 컨테이너가 제대로 작동 중인지 확인하기 위해 다음과 같은 명령어를 사용했다.
docker ps
위 사진과 같이 Kafka, ZooKeeper 컨테이너들이 실행중이였다.
혹시나 하는 마음에
kafka와 zookeeper 로그를 찍는 명령어를 사용해서 실행 중임을 확실하게 확인하였다.
docker logs kafka
docker logs zookeeper
도커 환경에서 제대로 실행 중인 것을 확인하고 다시 자바를 실행시켰다.
하지만 같은 에러가 발생하였다..
혹시나 하는 마음에 ProducerConfig파일과 ConsumerConfig파일을 열어서 보니
@Bean
public ConsumerFactory<String, Object> consumerFactory() {
Map<String, Object> config = new HashMap<>();
config.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
config.put(ConsumerConfig.GROUP_ID_CONFIG, "group_1");
config.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringSerializer.class);
config.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringSerializer.class);
return new DefaultKafkaConsumerFactory<>(config);
}
KEY_DESERIALIZER와 VALUE_DESERIALIZER에 StringDeserializer.class가 아닌 StringSerializer.class로 되어있었다.
Producer에서 직렬화해서 메시지를 발행하고 Consumer에서 메시지를 가져다 쓰는 흐름에서 직렬화된 메시지를 다시 직렬화를 하고 있던 것이었다.
@Bean
public ConsumerFactory<String, Object> consumerFactory() {
Map<String, Object> config = new HashMap<>();
config.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
config.put(ConsumerConfig.GROUP_ID_CONFIG, "group_1");
config.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
config.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
return new DefaultKafkaConsumerFactory<>(config);
}
다음과 같이 역직렬화로 바꿔서 실행하니까 문제가 해결이 되었다.
만약 Kafka와 ZooKeeper가 제대로 작동 중인데도 해당 에러가 발생한다면 Config파일을 꼼꼼히 확인해보자..
참고
https://inkyu-yoon.github.io/docs/Language/Java/Serialization
'Trouble-Shooting' 카테고리의 다른 글
[Spring Security] permitAll 했는데 왜 CustomFilter에 걸리나.. (0) | 2024.04.30 |
---|---|
java.sql.SQLSyntaxErrorException: Unknown database 해결 (0) | 2024.04.26 |