我使用jmeter DI-kafkaMeter向kafka发送消息
向 kafka 主题发送消息时出错:java.lang.RuntimeException:未找到 Kafka Producer Client。检查 KafkaProducerSampler 中的变量名称。
信息 o.a.k.c.p.KafkaProducer:[Producer clientId=JMeter-Producer-1] 以 timeoutMillis = 0 ms 关闭 Kafka 生产者。 2023-02-24 16:17:12,544 错误 c.d.j.k.c.KafkaProducerConfig:建立 Kafka 生产者客户端时出错!!
o.a.j.s.SampleResult 错误:必须在 setStartTime 之后调用 setEndTime java.lang.Throwable:无效的调用序列
向 kafka 主题发送消息时出错:java.lang.RuntimeException:未找到 Kafka Producer Client。检查 KafkaProducerSampler 中的变量名称。
信息 o.a.k.c.p.KafkaProducer:[Producer clientId=JMeter-Producer-1] 以 timeoutMillis = 0 ms 关闭 Kafka 生产者。 2023-02-24 16:17:12,544 错误 c.d.j.k.c.KafkaProducerConfig:建立 Kafka 生产者客户端时出错!!
o.a.j.s.SampleResult 错误:必须在 setStartTime 之后调用 setEndTime java.lang.Throwable:无效的调用序列
该错误表明 Sampler.sample() 函数在“DI-kafkaMeter”(无论它是什么)中未正确实现,并且您无能为力,除非修复源代码中的错误,重新编译插件并将固定版本放入JMeter Classpath
与此同时,您可以考虑使用另一个插件,即 Pepper-Box - Kafka Load Generator 或仅将 Kafka Java 客户端库 添加到 JMeter 的“lib”文件夹并使用 JSR223 Sampler 发送消息。
示例代码可以在这里
找到在 JSR223 Sampler 中使用的简化版本:
def props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("acks", "all");
props.put("retries", 0);
props.put("batch.size", 16384);
props.put("linger.ms", 1);
props.put("buffer.memory", 33554432);
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
def producer = new org.apache.kafka.clients.producer.KafkaProducer<>(props);
producer.send(new org.apache.kafka.clients.producer.ProducerRecord<>("your-topic", "your-key", "your-encrypted-value"));
producer.close();