inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!

레코드 전송 결과를 확인하는 프로듀서 애플리케이션

ProducerWithSyncCallback 코드 관련 질문

223

채채

작성한 질문수 2

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()는 불필요한 코드로 보면 될까요?

제가 잘못 이해하고 있는 부분이 있는지 확인 부탁드립니다:)

Kafka 데이터 엔지니어링

답변 1

1

데브원영 DVWY

안녕하세요 조채은님,

이해하신대로, get()이 결과를 받기까지 기다립니다. 그렇기 때문에 위 코드에서 flush()는 큰 의미가 없다고 보면 됩니다.

카프카 ISR 개념 부분 질문

0

487

1

카프카 커넥터를 두가지 사용하는 이유

0

908

1

브로커, 토픽, 파티션관계

0

687

1

커넥트(소스), 커넥트(싱크)

1

546

1

카프카 isr 질문 있어요

0

340

1

파티션 질문 있어요

0

393

1

명령어 관련 문의드립니다.

0

436

2

토픽의 레코드가 라운드로빈으로 배정되는 방식 질문있습니다.

0

435

2

레코드에 json 형태의 데이터 넣는법 질문

0

436

2

카프카 도커로 실행

1

447

1

CCDAK 질문입니다!

0

1367

1

스트림즈 조인에 관련해서 질문드립니다.

0

307

1

min.insync.replicas에서 설정값만큼의 브로커 다운시

0

259

1

브로커로 메시지를 보낼때 null값인 경우

0

475

1

zookeeper 실행시 에러

1

788

1

온프레미스 환경 설치에 대해 질문있습니다.

0

358

1

리밸런싱 시, 메시지 중복 처리 문제

0

1074

1

강사님, Idempotence / transaction의 차이가 궁금합니다.

0

377

1

브로커 장애 발생시 질문

0

339

1

에러 핸들링과 관련하여 질문 드립니다

0

316

1

토픽 생성시 파티션이 배치되는 방법

0

367

1

질문있습니다!

0

141

1

카프카 스트림즈 에러 핸들링 질문 드립니다

0

402

1

카프카 클러스터 질문이 있습니다.

0

186

1