flush, 即sync生产的调用关系:
如果是保持顺序的同步生产:
BufferdProducer::sync_produce()
-> Producer::flush()
->rd_kafka_flush()
->rd_kafka_poll()
->rd_kafka_q_serve()
->rd_kafka_op_handle()
->rd_kafka_op_handle_std()
->rd_kafka_op_call()
->rko->rko_op_cb() 完成回调
如果是不保持顺序的同步生产:
路径有点不一样。
BufferdProducer::async_produce()
-> Producer::flush()
->.....剩余步骤都一样。
问题1:生产线程和回调线程,是否同一个线程:
上图分析可见是同一个线程。
问题2: