首页 > 解决方案 > librdkafka 生产者的内部队列——它们是如何工作的?

问题描述

我有一些关于使用 librdkafka 的 GoLang Kafka 生产者的问题 - 这些是基于我在设置 debug: all 时在生产者日志中看到的日志。一旦重新缓存了批处理阈值或超过了 linger.ms,生产者就会花费一些时间来构建消息集。然而,几乎一直发生的事情是 - 消息从分区队列移动到 xmit 队列。我试图获取一些关于它的文档,但找不到太多,所以想检查我是否可以在堆栈上获得一些帮助。我的问题如下 -

a) 应用程序是否产生写入分区特定队列的调用?

b) 每个分区是否有一个 xmit 队列和一个分区队列?

c) 是什么触发了从分区队列到 xmit 队列的传输?为什么我们需要两个队列?

d) 当 Kafka 生产者为一个分区创建消息集时——它是否会阻塞该分区的所有操作?(比如将消息从分区队列移动到 xmit 队列)?简而言之,在为一个分区构建消息集时,新消息是否可以潜入 xmit 队列?被封锁了吗?

e) 有多少线程用于创建消息集?是每个生产者一个还是每个分区一个?

标签: apache-kafkalibrdkafka

解决方案


推荐阅读