Kafka16 Producer의 max.inflight.requests.per.connection 파라미터와 배치 메시지의 전송 순서 이해 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개의 배치 메시.. 2025. 5. 6. Producer의 전송/재전송 내부 메커니즘 및 전송 동작 관련 주요 파라미터의 이해 Producer의 전송/재전송 내부 메커니즘 및 전송 동작 관련 주요 파라미터의 이해Producer의 메시지 전송/재전송 시간 파라미터 이해max.block.mssend() 호출 시 Record Accumulator에 입력하지 못하고 block되는 최대 시간. 초과 시 Timeout Exception 발생send() 메서드를 통해 Record Accumulator에 입력하는 데 Record Accumulator가 꽉차거나해서 더이상 입력할 수 없을 때 block 되는 최대 시간linger.ms : Sender Thread가 Record Accumulator에서 배치별로 가져가기 위한 최대 대기 시간.request.timeout.ms전송에 걸리는 최대 시간. 전송 재시도 대기시간 제외. 초과 시 retry.. 2025. 5. 5. Producer의 동기(Sync)와 비동기(Async)에서 배치 전송 차이 Producer의 동기(Sync)와 비동기(Async)에서 배치 전송 차이기본적으로 KafkaProducer 객체의 send() 메서드는 비동기(Async)이며 Batch 기반으로 메시지 전송Callback 기반의 Async는 비동기적으로 메시지를 보내면서 RecordMetaData를 Client가 받을 수 있는 방식을 제공Callback 기반의 Async는 여러 개의 메시지가 Batch로 만들어진다.RecordMetaData recordMetadata = KafkaProducer.send().get()와 같은 방식으로 개별 메시지 별로 응답을 받을 때까지 block이 되는 방식이므로 메시지 Batch 처리는 불가, 전송은 Batch 레벨이지만 배치에 메시지는 단 1개 2025. 5. 4. Producer의 메시지 배치 전송 내부 메커니즘 - linger.ms와 batch.size Producer의 메시지 배치 전송 내부 메커니즘 - linger.ms와 batch.sizeSender Thread는 기본적으로 전송할 준비가 되어 있으면 Record Accumulator에서 1개의 Batch를 가져갈수도, 여러 개의 Batch를 가져갈 수도 있다.linger.ms를 0보다 크게 설정하여 Sender Thread가 하나의 Record Batch를 가져갈 때 일정 시간 대기하여 Record Batch에 메시지를 보다 많이 채울 수 있도록 적용max.inflight.requests.per.connection=2이면 Batch를 총 2개까지 가져올 수 있다. Producer의 메시지 배치 전송 내부 메커니즘 - linger.ms와 batch.size 동작 메커니즘 #1 Producer의 메시.. 2025. 4. 30. Producer의 메시지 배치 전송 내부 메커니즘 - Record Batch와 Record Accumulator 이해 Producer의 메시지 배치 전송 내부 메커니즘 - Record Batch와 Record Accumulator 이해Serializer -> Partitioner -> Compression(선택) -> Record Accumulator 저장 -> Sender에서 별도의 Thread로 전송send() 메서드는 Record Accumulator Batch에 쌓이게 하고, 쌓은 Batch를 Sender를 통해 Kafka Broker Partition으로 전송한다. Producer Record와 Record BatchKafkaProducer 객체의 send() 메서드는 호출 시마다 ProducerRecord를 입력하지만 바로 전송되지 않고 내부 메모리(Record Accumulator)에서 단일 메시지를 토픽 .. 2025. 4. 29. acks 값 설정에 따른 Producer의 전송 방식 차이 이해 acks 값 설정에 따른 Producer의 전송 방식 차이 이해Producer의 acks 설정에 따른 send 방식Producer는 해당 Topic의 Partition의 Leader Broker에게만 메시지를 발행한다.Leader Broker가 Follower에게 전달하는 것처럼 보이지만 실제로는 Follower에서 Leader Broker에 요청을 하고 받는다. Producer의 acks 설정에 따른 send 방식 - acks 0Producer는 해당 Topic의 Partition의 Leader Broker에게만 메시지를 발행한다.Producer는 Leader Broker가 메시지 A를 정상적으로 받았는지에 대한 Ack 메시지를 받지 않고 다음 메시지인 메시지 B를 바로 전송메시지가 제대로 전송되었는지.. 2025. 4. 28. 이전 1 2 3 다음