(我正在编辑问题,因为我认为它不够清楚)
如何对我的 kafka 消费者进行负载测试? 我看过很多关于负载测试 apache kafka 的文章,但没有关于负载测试消费者的文章。 例如。我在jsr223中编写了jmeter kafka生产者测试计划,将事件发送到kafka主题。 我的 kafka spring boot 消费者听了这个话题,消费了事件并开始处理它。 Jmeter 只向我展示了关于该主题的制作人的报告,仅此而已。 有没有更好的方法来对 spring boot kafka 消费者应用程序进行负载测试并获得报告? 从消耗时间到流程结束?
答案 0 :(得分:2)
我相信 kafka-consumer-perf-test.sh
脚本与每个 Kafka 安装一起使用,它应该足以满足您的用例,请参阅 Performance testing Kafka Wiki page 了解更多详细信息。
该脚本可以使用 OS Process Sampler
与 JMeter 集成如果您正在谈论使用 JMeter 从损坏的消息中读取消息 - 它可以通过任何 JSR223 Test Element
将库和依赖项放入 JMeter Classpath
重启 JMeter 以获取库
将实现从 Kafka 主题读取消息的代码放入 JSR223 采样器,示例代码段:
props.put('bootstrap.servers', '192.168.99.100:9092')
props.put('group.id', 'foo')
props.put('enable.auto.commit', 'true')
props.put('auto.commit.interval.ms', '1000')
props.put('session.timeout.ms', '30000')
props.put('key.deserializer',
'org.apache.kafka.common.serialization.StringDeserializer')
props.put('value.deserializer',
'org.apache.kafka.common.serialization.StringDeserializer')
def consumer = new org.apache.kafka.clients.consumer.KafkaConsumer<String, String>(props)
def topic = 'sometopic'
consumer.subscribe(Arrays.asList(topic))
log.info('Subscribed to topic ' + topic)
while (true) {
def records = consumer.poll(100)
records.each { record ->
log.info('Received message: ' + record.value())
}
}
更多信息: