작성
·
173
0
안녕하세요, ProducerWithSyncCallback 코드에서 궁금한 점이 있어 질문 남깁니다.
try {
RecordMetadata metadata = producer.send(record).get();
logger.info(metadata.toString());
} catch (Exception e) {
logger.error(e.getMessage(), e);
} finally {
producer.flush();
producer.close();
}
예제로 보여주신 위 코드에서 producer.flush()
코드가 배치 사이즈만큼 레코드가 쌓이는 걸 기다리지 않고 바로 레코드를 브로커로 보내는 코드로 알고 있는데, producer.flush()
코드가 finally에 있는 것이 의아해서 질문드립니다.
producer.send
호출 후 linger.ms
가 0이라서 바로 브로커로 보내지고 해당 결과를 기다리던 get
이 결과를 받아 logger.info
를 호출한 것으로 이해했는데요, 그럼 위 예제에서 producer.flush()
는 불필요한 코드로 보면 될까요?
제가 잘못 이해하고 있는 부분이 있는지 확인 부탁드립니다:)
답변 1
1