kafka节点的消息顺序错误
Wrong message order with kafka-node
我使用的是kafka node.js库。当使用250k条消息(以2000条消息为一批加载到Kafka中)和新启动(zookeeper中没有偏移)来消费主题时,我的消息顺序有问题。使用者通常不处理偏移量为0的消息,而是从4000或8000左右开始。此外,它会连续处理1000条消息块,并在稍后或更早的N*1000偏移量处跳转。我已经尝试将maxTickMessages更改为800,它处理块od800消息,但它仍然跳到N*1000偏移。我在调试日志中找不到缺少的200个偏移。将maxTickMessages或maxNumSegments更改为非常大的数字没有帮助。
我在Kafka二进制协议解码器中直接打印当前消息偏移量,这应该会消除一些潜在的异步影响。请参阅Offset日志和使用的代码kafka-order-test.js。我认为kafka二进制协议解析有问题,但我没能在其中找到问题。
Kafka本身不应该是一个问题,因为我用kafkacat抛弃了主题,它保持了正确的偏移量和消息顺序。我还使用Wireshark监控了node.js-Kafka网络流量,消息按正确顺序显示。
此问题是由异步嵌套MessageSet解压缩引起的,该解压缩导致无序的消息消耗。Kafka在MessageSet中返回消息,其中包含2000条消息的嵌套压缩MessageSet(在我的测试中)。不幸的是,解压缩是异步的,没有任何同步,因此消息被按最大2000的批量处理(取决于maxTickMessages)。我的修复程序应用同步解压缩。
相关文章:
- Javascript执行顺序错误
- 带有 CommonsChunkPlugin 的 Webpack 会导致 html 文件中的捆绑顺序错误
- ES6模块初始化顺序错误
- 在Firefox中的keydown事件中隐藏元素时焦点顺序错误
- 使用 JS 填充 HTML 表,数据顺序错误
- JavaScript 排序顺序错误
- ReactJS:Dom 渲染顺序错误
- kafka节点的消息顺序错误
- 角度指令后链接顺序错误(1.3)
- 循环运行顺序错误的Javascript
- AJAX调用顺序错误(异步)javascript
- node.js(谷歌日历api,mongojs)中循环的顺序错误
- Angular2-NgFor内部树模型:删除然后添加元素时顺序错误
- 数组填充顺序错误
- ASP.. Net MVC jQuery和插件加载顺序错误
- 在wordpress子主题中排队脚本顺序错误
- Var和function的工作顺序错误
- 使用LABjs的执行顺序错误
- 函数执行顺序错误
- Cookie和模态发送报头顺序错误