카프카 in 에러 핸들링

유형찬·2023년 5월 12일
0

에러 핸들링

목록 보기
2/2

서론

현재 진행하는 프로젝트에서 카프카를 사용하고 있습니다. 현재는 구현 단계일 뿐이지만 어떻게 하면 카프카 에러를 핸들링 할 수 있을지 고민하고 있습니다. 이 글에서는 카프카 에러 핸들링에 대해 정리하고자 합니다.

카프카 에러 핸들링의 방법

이런 메시징 큐의 핸들링 방법은 3가지 방법으로 나뉩니다.

  1. Retry
  2. Ignore
  3. Dead Letter Queue

Retry

재시도란 말 그대로 에러가 발생하면 재시도를 하는 것입니다. 재시도를 하는 방법은 크게 2가지가 있습니다.

  1. blocking retry
  2. non-blocking retry

blocking retry

이 경우는 재시도 완료 까지 메시지를 소비 하지 않습니다. 블로킹 이기 때문에 성능상 문제가 있습니다.

non-blocking retry

이 경우는 재시도를 하면서 메시지를 소비합니다. 이 경우는 성능상 문제가 없지만 재시도를 하면서 메시지를 소비하기 때문에 메시지가 중복으로 처리될 수 있고 , 순서 보장이 되지 않습니다. blocking retry와 non-blocking retry의 장단점을 보면 아래와 같습니다.

  • blocking retry 기준
장점단점
메시지 순서 보장성능 저하
메시지 중복 처리 방지메시지 중복 처리 가능
메시지 순서 보장 불가능

Ignore

Ignore는 에러가 발생하면 그냥 무시하는 방법입니다. 이 방법은 메시지를 소비하는 소비자 입장에서는 에러가 발생했는지 알 수 없습니다. 그래서 이 방법은 잘 사용하지 않습니다.

Dead Letter Queue

  • Dead Letter Queue는 에러가 발생하면 에러를 저장하는 큐입니다.
  • 이 큐는 에러가 발생한 메시지를 저장하고 있습니다.
  • 이 큐를 소비하는 소비자가 에러를 핸들링 합니다.
  • 에러가 발생한 메시지를 저장하기 때문에 메시지가 중복으로 처리될 수 있고, 순서 보장이 되지 않습니다.
  • 에러가 발생한 메시지를 저장하기 때문에 메시지를 저장하는 공간이 필요합니다.

다음 포스팅

다음 포스팅은 각각의 retry을 spring 에서 어떻게 구현하는지에 대해 정리하고자 합니다.

profile
rocoli에요

0개의 댓글