我正在尝试通过 jmeter 监控 Kafka 主题。我通过一个外部工具向 kafka 主题发送了 100 条消息,并且消息完美传递,因为我在消费者窗口中进行了检查。现在我想使用 jmeter 监控 kafka 主题。我研究过使用 kafkameter 并查看了一些关于使用 kafkameter 进行负载测试的教程。但是在我在网上找到的所有资源中,都显示了如何向 Kafka 主题发送消息,然后对其进行监控,这是我不想做的。我想在从外部工具向该主题发送消息时监视该主题。谁能帮我这个?
问问题
476 次
1 回答
2
我不知道“监控”是什么意思,如果你想从给定的 Kafka 主题接收消息 - 你可以使用JSR223 Sampler和Kafka Consumer API来读取消息并做任何你想做的事情。
- 下载为JMeter Classpath提供 Kafka Consumer API 的库
- 重新启动 JMeter 以获取库
将 JSR223 Sampler 添加到您的 Thread Group 并放置将与“有趣”Kafka 主题建立连接的代码,为了给您一个总体思路,这里有一个简单的示例代码,它等待传入消息并将它们打印到jmeter.log文件
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()) } }
演示:
于 2020-03-18T12:42:26.157 回答