728x90
반응형
개요
Spring boot 프로젝트에서 kafka를 consume(구독)할때 kafka topic의 데이터를 역직렬하는 형식과 consumer 함수에서 인자로 받는 데이터 형식이 다르면 에러 메세지가 무한히 반복되게 됩니다.
이런 경우 ErrorHandlingDeserializer를 사용하면 에러 메세지가 무한히 반복되지 않습니다. ErrorHandlingDeserializer는 Apache Kafka의 Consumer에서 메시지를 역직렬화할 때 발생하는 예외를 처리하기 위한 디코더의 한 유형입니다. 이 디코더는 Kafka Consumer에게 더 나은 오류 처리 기능을 제공하여 예외를 처리하고 데이터 손실을 방지합니다.
Kafka Consumer는 메시지를 읽을 때 해당 데이터를 역직렬화하여 원래 형식으로 변환해야 합니다. 그러나 종종 잘못된 데이터 또는 예상치 못한 데이터 형식으로 인해 역직렬화 중에 예외가 발생할 수 있습니다. 이 예외는 기본적으로 Consumer에 의해 처리되지만, 이를 개선하고자 ErrorHandlingDeserializer를 사용할 수 있습니다.
ErrorHandlingDeserializer 설정 방법
application.yml 파일에 value-deserialize를 ErrorHandlingDeserializer로 설정하고 properties.spring.deserializer.value.delegate.class 에 실제로 사용할 디코더를 설정해주면 됩니다.
spring:
kafka:
bootstrap-servers: "localhost:9092"
consumer:
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.springframework.kafka.support.serializer.ErrorHandlingDeserializer
properties:
spring:
json:
trusted:
packages: "*"
deserializer:
value:
delegate:
class: org.springframework.kafka.support.serializer.JsonDeserializer
참고자료
728x90
반응형
'개발 > Kafka' 카테고리의 다른 글
Kafka 서버 비정상적 종료 에러 해결 (다른 프로세스가 파일을 사용 중이기 때문에 프로세스가 액세스 할 수 없습니다) (0) | 2024.01.25 |
---|---|
Kafka 외부 접속 허용 (0) | 2024.01.17 |
[Apache Kafka] sink connector 오류 수정 (0) | 2023.12.12 |
[Apache Kafka] topic 삭제 후 재생성시 producer 동작 안하는 현상 (1) | 2023.12.11 |
[Apache Kafka] CMAK 웹사이트 (0) | 2023.12.11 |