카프카/Java 기반 카프카 클라이언트 구현, Producer 내부 메커니즘 2

Producer의 max.in.flight.request.per.connection의 이해

webmaster 2025. 10. 4. 01:45
728x90

max.in.flight.request.per.connection

  • 브로커 서버의 응답없이 Producer의 Sender thread가 한번에 보낼 수 있는 메시지 배치의 갯수
    • default 값은 5로, kafka producer 의 메시지 전송 단위는 Batch이다.
  • 비동기 전송 시 브로커의 응답 없이 한꺼번에 보낼 수 있는 Batch의 갯수는 max.in.flight.per.connection에 따름

Producer 메시지 전송 순서와 Brocker 메시지 저장 순서

  • B0 이, B1보다 먼저 Producer에서 생성된 메시지 배치
  • max.in.flight.requests.per.connectio = 2(1보다 클 경우)에서 B0,B1 2개의 배치 메시지를 전송.
  • B1은 성공적으로 기록되었으나, B0의 경우 Write 되지 않고 Ack 전송이 되지 않는 Failure 상황이 됨
  • Producer는 B0를 재전송하여 성공처리 할 수 있으나, Producer의 원래 메시지 순서와는 다르게 Brocker에 저장될 수 있음
  • 보통은 분산 시스템에서 순서를 보장하지 않는게 일반적이나,. 순서 보장이 반드시 필요하다면, enable.idempotence 옵션을 true로 설정해서 순서 보장을 할 수 있다.

 

728x90