0

我正在尝试通过 jmeter 监控 Kafka 主题。我通过一个外部工具向 kafka 主题发送了 100 条消息,并且消息完美传递,因为我在消费者窗口中进行了检查。现在我想使用 jmeter 监控 kafka 主题。我研究过使用 kafkameter 并查看了一些关于使用 kafkameter 进行负载测试的教程。但是在我在网上找到的所有资源中,都显示了如何向 Kafka 主题发送消息,然后对其进行监控,这是我不想做的。我想在从外部工具向该主题发送消息时监视该主题。谁能帮我这个?

4

1 回答 1

2

我不知道“监控”是什么意思,如果你想从给定的 Kafka 主题接收消息 - 你可以使用JSR223 SamplerKafka Consumer API来读取消息并做任何你想做的事情。

  1. 下载为JMeter Classpath提供 Kafka Consumer API 的库
  2. 重新启动 JMeter 以获取库
  3. 将 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())
        }
    }
    

演示:

在此处输入图像描述

更多信息:Apache Kafka - 如何使用 JMeter 进行负载测试

于 2020-03-18T12:42:26.157 回答