Producer의 동기 전송 및 비동기 전송 관련 질문
14
작성한 질문수 3
선생님, 안녕하세요. 강의 즐겁게 듣고 있습니다.
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가 없는 경우를 동기 전송이라고 표현하신 기준이나 맥락이 따로 있는지 궁금합니다.
소중한 시간 내주셔서 감사합니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. AKBA님!
질문하신 confluent-kafka-python의 produce() 동기·비동기 동작과 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를 래핑하여 구현되었기 때문이며, 관련 구현은 아래 소스에서 확인할 수 있습니다.
기존 답변의 원본 질문은 다음 링크에서도 확인하실 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
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





