인프런 커뮤니티 질문&답변

starryeye님의 프로필 이미지
starryeye

작성한 질문수

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

kafka-console-consumer.sh 출력 순서 관련 질문

해결된 질문

작성

·

230

·

수정됨

0

안녕하세요 강의 잘 듣고 있습니다.

 

강의

[섹션 5 카프카 프로듀서 애플리케이션 개발 > 메시지 키를 가진 프로듀서 애플리케이션]

에서의 질문 드립니다..

 

질문 1.

강의를 따라가며 실습을 그대로 진행해보고 있는데..

아래와 같이 kafka-console-consumer 명령어에 --from-beginning 옵션을 주고 실행했을 때..

보낸 순서대로 출력이 이루어지지 않는것으로 보여서 이유가 무엇인지 궁금합니다..

 

질문 2.

애플리케이션에서 key1-value1 을 먼저 send 하고

key2-value2 를 send 하는 순서로 실행을하면..

kafka-console-consumer 명령어로 실시간으로 출력되는 것을 보았을 때..

key2 가 먼저 출력되고 key1 이 출력됩니다.. 이 경우 무엇이 잘못 된건지 궁금합니다.

 

실습환경

  • Kafka 2.5.0

  • 코드는 3.4.1 kafka-producer 의 ProducerWithKeyValue 를 key value 값만 변경하였습니다.

 

감사합니다.

답변 1

1

데브원영 DVWY님의 프로필 이미지
데브원영 DVWY
지식공유자

질문1) --from-beginning 옵션은 각 파티션의 레코드를 처음부터 읽는 다는 것이지, 프로듀서가 넣은 순서대로 읽는 다는 뜻이 아닙니다. 그러므로 결과적으로 파티션 별 순서를 보시는 것이 정확합니다.

질문2) 코드를 올려주셔야 정확한 상황을 알 수 있습니다만, [key1-value1]과 [key2-value2]를 프로듀서 클라이언트 코드로 전송했을 경우 flush가 일어나면서 파티션에 동시에 전송될 수 있습니다. 이 경우 컨슈머는 실제로 전송된 순서와 무관하게 [key2-value2]가 출력될 가능성이 있습니다.

starryeye님의 프로필 이미지
starryeye

작성한 질문수

질문하기