ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Kafka] 프로듀서(Producer)
    Kafaka 2021. 7. 28. 08:54

     

     

    전송 보장과 acks

    • ack = 0
      • 서버 응답을 기다리지 않음
      • 전송 보장도 zero
    • ack= 1
      • 파티션의 리더에 저장되면 응답 받음
      • 리더 장애시 메시지 유실 가능
    • ack = all (또는 -1)
      • 모든 리플리카에 저장되면 응답 받음
        • 브로커 min.insync.replicas 설정에 따라 달라짐

     

     

    실패 대응

    • 재시도
      • 재시도 가능한 에러는 재시도 처리
        • 예 : 브로커 응답 타임 아웃, 일시적인 리더 없음 등
    • 재시도 위치
      • 프로듀서는 자체적으로 브로커 전송 과정에서 에러가 발생하면 재시도 가능한 에러에 대해 재전송 시도 ⇒ retries 속성
      • send() 메서드에서 익셉션 발생시 엑셥션 타입에 따라 send()재호출
      • 콜백 메서드에서 익셉션 받으면 타입에 따라 send() 재호출
    • 아주 아주 특별한 이유가 없다면 무한 재시도 x ⇒ 이 메시지를 계속 처리하면 다른 메시지가 밀림
    • 기록
      • 추후 처리 위해 기록
        • 별도 파일, DB 등을 이용해서 실패한 메시지 기록
        • 추후에 수동(또는 자동) 보정 작업 진행
      • 기록 위치
        • send() 메서드에서 익셉션 발생시
        • send() 메서드에 전달한 콜백에서 익셉션 받는 경우
        • send() 메서드가 리턴한 Future의 get()메서드에서 익셉션 발생시

    ⇒ enable.idempotence 속성을 이용하면 중복 가능성을 줄일 수 있음 (doc 참조)

    ⇒ enable.idempotence 속성을 이용하면 중복 가능성을 줄일 수 있음 (doc 참조)

     

    https://www.youtube.com/watch?v=xqrIDHbGjOY kafka 조금 아는 척하기 1~3 (개발자용)

    댓글

Designed by Tistory.