前言:最近在做kafka、mq、redis、fink、kudu等在中间件性能压测,压测kafka的时候遇到了一个问题,我用jmeter往kafka发消息没有时间戳,同样的数据我用python发送就有时间戳,且jmeter会自动生成错误的变量key,那我是怎么解决的呢,容我细细道来!

一、jmeter怎么往kafka发送数据

jmeter往kafka发送数据我之前有写过博客,大家可以参考下,遇到我前言说的问题就可以参考本篇文章

二、jmeter生成错误key解决方案

我们用了kafka插件后jmeter中引入界面展示如下:
在这里插入图片描述
${PARAMETER_KAFKA_KEY}我们可以改为其他参数,这个是没有问题的,但是我项目kafka不需要key这个参数,当时我想填空值的,没想到填了空值后一运行jmeter后${PARAMETER_KAFKA_KEY}就自动填充进去了,导致发送到kafka的数据就多了一个错误的key
在这里插入图片描述
这个时候我们就需要找到kafka插件的jar包源码,修改一下源码重新生成jar包
在这里插入图片描述
只要把第156行的defaultParameters.addArgument(PARAMETER_KAFKA_KEY, "${PARAMETER_KAFKA_KEY}");修改为defaultParameters.addArgument(PARAMETER_KAFKA_KEY, null);就大功告成了
在这里插入图片描述
我用的编译器是常用的java神器之idea,这个工具打包jar包大家可以参考这篇文章
在这里插入图片描述
打包成功
在这里插入图片描述
将自己打的jar在jmeter的lib/ext目录下进行替换后发现界面展示默认就是空值了
在这里插入图片描述
发送的数据key也是显示正常的,kafka里面没有key信息展示了
在这里插入图片描述

三、jmeter生成kafka数据没有时间戳

上面的问题解决了,但是又发现一个新的问题,jmeter生成kafka数据没有时间戳,这可是不行的,毕竟我项目需要用到时间戳这个字段数据入库kudu
在这里插入图片描述
之前我用python脚本发送的数据是正常的,用jmeter就不正常了,我查阅了jmeter kafka jar包的相关资料,发现这插件一般都是和jmeter的后端监听器一起用的,是不是因为我没有引入这个jar包呢?我按着这个思路尝试了一下,把jmeter.backendlistener.kafka-1.0.1.jar包引入到了jmeter的lib/ext目录下,发现数据顿时正常了,大家需要这个jar可以去这里下载
在这里插入图片描述

四、开始愉快的压测之旅

在这里插入图片描述

五、疑问解答与加群学习交流

在这里插入图片描述

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐