Producer의 max.inflight.requests.per.connection 파라미터와 배치 메시지의 전송 순서 이해
- 브로커 서버의 응답없이 Producer의 Sender Thread가 한번에 보낼 수 있는 메시지 배치의 개수. 기본값은 5이다. Kafka Producer의 메시지 전송 단위는 Batch이다.
- 비동기 전송 시 브로커의 응답없이 한꺼번에 보낼 수 있는 Batch의 개수는 max.inflight.requests.per.connection에 따른다.
Producer 메시지 전송 순서와 Broker 메시지 저장 순서 고찰
- B0가 B1보다 먼저 Producer에서 생성된 메시지 배치
- max.inflight.requests.per.connection = 2 (>1)에서 B0, B1 2개의 배치 메시지를 전송 시 B1은 성공적으로 기록되었으나 B0의 경우 Write되지 않고 Ack 전송이 되지 않는 Failure 상황이 된 경우 Producer는 B0를 재전송하여 성공적으로 기록되며 Producer의 원래 메시지 순서와는 다르게 Broker에 저장될 수 있다.
- enable.idempotence=true 설정으로 max.inflight.requests.per.connection이 1보다 큰 경우 발생할 수 있는 메시지 순서 이슈를 해결할 수 있다.
'kafka > core' 카테고리의 다른 글
Consumer의 주요 메커니즘 개요 (0) | 2025.05.13 |
---|---|
최대 한번 전송, 적어도 한번 전송, 정확히 한번 전송 (0) | 2025.05.12 |
Producer의 전송/재전송 내부 메커니즘 및 전송 동작 관련 주요 파라미터의 이해 (0) | 2025.05.05 |
Producer의 동기(Sync)와 비동기(Async)에서 배치 전송 차이 (0) | 2025.05.04 |
Producer의 메시지 배치 전송 내부 메커니즘 - linger.ms와 batch.size (0) | 2025.04.30 |
댓글