我对使用librdkafka的GoLang Kafka生产者有一些疑问- 这些基于我在设置debug:all时在生产者日志中看到的日志。 一旦重新缓存批处理阈值或通过了linger.ms,生产者就会花一些时间来构建消息集。但是,几乎所有时间都是-消息从分区队列移到xmit队列。我试图获取一些文档,但找不到太多,因此想检查一下是否可以在堆栈上获得帮助。我的问题如下-
a)应用程序是否产生调用写入分区特定队列的调用?
b)每个分区是否有一个xmit队列和一个分区队列?
c)是什么触发了从分区队列到xmit队列的传输?为什么我们需要两个队列?
d)当Kafka生产者为一个分区创建消息集时-它会阻止该分区的所有操作吗? (就像将消息从分区队列移动到xmit队列一样)?简而言之,当为分区构建消息集时,新消息可以潜入xmit队列吗?被阻止了吗?
e)有多少个线程可用于创建消息集?是每个生产者一个还是每个分区一个?