728x90
problem
코틀린 -
자바 -
위 에러는 코틀린과 자바 같은 오류인데
카프카 -> 서버
데이터를 받아오려고 하는데 데이터가 맞지 않아
서버 롤백 > 카프카에서 서버로 데이터 삽입 > 서버 롤백 > 데이터 삽입 ...
무한으로 흘러가서 발생하는 오류였다...
ListenerConsumer 클래스의 run( ) 메소드를 보면 아래와 같이 while 형태로 구현되어있다.
while (isRunning()) {
try {
pollAndInvoke();
} catch (...) {
...
}
...
catch(Exception e) {
handleConsumerException(e);
}
}
결국 commit이 되지 않아, 같은 offset에서 계속 재시도하게 됩니다.
이로 인해, spring-kafka는 ErrorHandlingDeserializer를 도입하기로 했습니다.
ErrorHandlingDeserializer는 우리가 사용하는 Deserializer를 한 번 래핑한 형태의 Deserializer입니다.
이 코드를 보시면 ErrorHandlingDeserializer가 delegate라는 변수로 실제 Deserializer를 가지고 있는 것을 알 수 있습니다.
solution
에러 핸들러를 씌어줌으로써 코드의 안정성을 더 할 수 있다.
1. 직렬화 역질렬화때 잘못된 값에 대한 안정성을 보장해준다.
2. 값이 없으면 대체값을 넣어준다. 디시리얼 라이져에 ErrorHandlingDeserializer 를 넣어주어 해결 하였다.
728x90
'일-상 > 오류노트' 카테고리의 다른 글
[오류노트] EC2 -> RDS 접속 (0) | 2024.03.19 |
---|---|
[오류노트] 티스토리 본문 글자색 안바뀌는 현상 해결 (다크모드) (3) | 2024.03.06 |
[오류노트] JAVA 프로젝트에 Kotlin 멀티모듈 생성 (2) | 2024.02.12 |
[오류노트] 스레드 동시성 스레드 접근 순서 문제 (2) | 2024.01.04 |
[오류노트] 스프링부트 테스트 contextLoads() FAILED (0) | 2023.11.22 |