apache-kafka - librdkafka 生产者的内部队列——它们是如何工作的?
问题描述
我有一些关于使用 librdkafka 的 GoLang Kafka 生产者的问题 - 这些是基于我在设置 debug: all 时在生产者日志中看到的日志。一旦重新缓存了批处理阈值或超过了 linger.ms,生产者就会花费一些时间来构建消息集。然而,几乎一直发生的事情是 - 消息从分区队列移动到 xmit 队列。我试图获取一些关于它的文档,但找不到太多,所以想检查我是否可以在堆栈上获得一些帮助。我的问题如下 -
a) 应用程序是否产生写入分区特定队列的调用?
b) 每个分区是否有一个 xmit 队列和一个分区队列?
c) 是什么触发了从分区队列到 xmit 队列的传输?为什么我们需要两个队列?
d) 当 Kafka 生产者为一个分区创建消息集时——它是否会阻塞该分区的所有操作?(比如将消息从分区队列移动到 xmit 队列)?简而言之,在为一个分区构建消息集时,新消息是否可以潜入 xmit 队列?被封锁了吗?
e) 有多少线程用于创建消息集?是每个生产者一个还是每个分区一个?
解决方案
推荐阅读
- java - 如何结合 BottomNavigationView 和 ViewPager?
- python - 如何将csv文件中的列表转换为numpy数组
- node.js - 无法编译 ./src/App.js 尝试导入错误:“UserProvider”未从“./model/UserContext”导出
- angular - VS Code 的多个实例
- java - Confluence插件中是否有可以统计JIRA项目过滤的问题的功能?
- laravel - 需要 Laravel Route::controller 和 Route::controllers
- javascript - 即使 if 语句返回真值,也从 ajax 代码中的后端 Flask 获取错误响应
- python - 如何在两个数据(日期和 X1)使用 python 附加一个列表时绘制图形
- java - 为什么我的快速求幂算法在 lambda 参数中出现“找不到符号”错误?
- python-3.x - 当我读取二进制文件时,它的大小是错误的