inflearn logo
강의

講義

知識共有

Kafka & Spark を活用したリアルタイムデータレイク

Simple Producer を理解する

Producer의 동기 전송 및 비동기 전송 관련 질문

14

AKBA

投稿した質問数 3

0

선생님, 안녕하세요. 강의 즐겁게 듣고 있습니다.

6장 28의 수강 중 Producer의 Simple Producer 이해하기 동기/비동기 전송 관련해서 궁금한 점이 있어 질문드립니다. 타임라인은 9:00 입니다.

강의에서는 producer.produce(topic, key="key", value="value")처럼 on_delivery 파라미터를 지정하지 않은 경우를 동기 전송으로 설명해주셨고, on_delivery 콜백을 지정한 경우를 비동기 전송으로 설명해주신 것으로 이해했습니다.

그런데 Confluent Kafka Python 공식 문서를 보면 produce() 자체가 asynchronous operation으로 설명되어 있고, on_delivery는 전송 완료 결과를 전달받기 위한 callback으로 보입니다.

제가 이해한 바로는 on_delivery의 유무와 관계없이 produce() 자체는 비동기이고, on_delivery는 성공/실패 결과를 전달받기 위한 용도인 것 같은데요.

강의에서 on_delivery가 없는 경우를 동기 전송이라고 표현하신 기준이나 맥락이 따로 있는지 궁금합니다.

소중한 시간 내주셔서 감사합니다.

kafka apache-spark pyspark data-lake

回答 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. AKBA님!

질문하신 confluent-kafka-pythonproduce() 동기·비동기 동작과 on_delivery 콜백에 대해 참고할 만한 기존 답변이 있습니다.

confluent-kafka 의 produce 파라미터(on_devliery)

기존 답변에서도 설명되어 있듯이, Producer.produce()는 기본적으로 비동기 방식으로 메시지를 전송합니다. on_delivery 또는 callback은 전송 방식 자체를 동기·비동기로 바꾸는 옵션이라기보다, 메시지 전송이 성공했는지 실패했는지를 전달받기 위한 콜백입니다.

producer.produce(
    topic,
    key="key",
    value="value",
    on_delivery=delivery_report
)

따라서 다음과 같이 이해하시면 됩니다.

  • produce() 호출: 메시지를 내부 큐에 넣고 즉시 반환하는 비동기 동작
  • on_delivery 지정: 브로커의 처리 결과를 콜백으로 확인
  • producer.poll() 또는 producer.flush(): 실제 전송 처리와 콜백 실행을 진행

강의에서 on_delivery가 없는 경우를 동기 전송이라고 표현한 것은 엄밀한 라이브러리 동작 기준이라기보다는, 전송 결과를 별도의 콜백으로 확인하지 않는 단순한 사용 방식과 비교해 설명한 맥락으로 보입니다. Confluent 공식 문서 기준으로는 on_delivery 유무와 관계없이 produce() 자체는 asynchronous operation입니다.

또한 이 동작은 confluent-kafka-python이 C 기반의 librdkafka를 래핑하여 구현되었기 때문이며, 관련 구현은 아래 소스에서 확인할 수 있습니다.

기존 답변의 원본 질문은 다음 링크에서도 확인하실 수 있습니다.

기존 질문 원본 URL

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Hive metastore setup중에 오류 발생

0

37

2

ansible playbook 오류

0

67

2

실습 환경 : 파이썬 3.10 관련 문의

0

72

2

kafka 라이선스 오류 문제

0

73

2

repartition 전후 persist 용량 차이가 나는 이유가 궁금합니다

0

80

1

setting_python_env.yml 오류

0

76

2

섹션4 AWS NAT Instance생성하는 과정에서 오류가 지속해서 발생합니다.

0

69

1

파이참 25.3.4 버전에서 한폴더에 두개 프로젝트 생성하는 방법은?

0

82

2

consumer가 모든 파티션을 읽지 않는 이슈가 있습니다

0

143

3

람다 아키텍처에서 speed layer 관련 질문드립니다

0

89

1

아키텍처 관련 질문

0

90

1

code deploy 배포에러

0

137

4

/homework/ch10_3/dataframe_cache.py 과제 질문

0

103

2

ch4_3 apache zookeeper 설치파일 관련 질문

0

162

3

질문있습니다 섹션13. Spark streaming 부분

0

108

2

ot 자료

0

99

2

git action - code deploy단계

0

143

2

IDE - Pycharm / VSCode

0

132

1

UI For Apache Kafka 설치하기

0

193

2

kafka broker prompt 변경 확인

0

129

2

디스코드 만료

0

106

2

Zookeeper 설치 오류

1

125

3

github 레파지토리 생성 및 연결 관련 질문드립니다!

0

96

2

git action실행 안됨

0

237

1