Jmeter kafka生产者负载测试发送字符串分隔Json



我正在尝试发送带有字符串分隔的json例如


"carrierId":"XXX",
"eventProcessedTS":1618261255871,
"eventTS":1618261255871,
"deviceId":"XXX",
"event":  "{"deviceDetailsDataModel":{"eventDateTime":1618261255871,"vin":"XXXX","deviceTimeZone":"XXXX","deviceId":"XXXXX"}}"
}

但当我看到卡夫卡的消费者我以的身份收到消息

"carrierId":"XXX",
"eventProcessedTS":1618261255871,
"eventTS":1618261255871,
"deviceId":"XXX",
"event":  "{"deviceDetailsDataModel":{"eventDateTime":1618261255871,"vin":"XXXX","deviceTimeZone":"XXXX","deviceId":"XXXXX"}}"
}```
without string delimited.
I have created this as JsonObject and convert event object alone to string using  event.toString() in my JSR223sampler but Still, it's not working. is it a limitation?  I am using kafkaclient 2.7.0

不太清楚哪个"Jmeter kafka生产商";您正在使用的是,开箱即用的JMeter不提供任何Kafka负载测试功能,如果您正在使用像Pepper box-Kafka load Generator或kafkameter这样的插件,您应该向JMeter插件开发人员和/或维护人员提出这个问题。

还要注意,您总是可以使用JSR223 Sampler和Groovy代码来实现Kafka生产者,示例代码如下:

import org.apache.kafka.clients.producer.KafkaProducer
import org.apache.kafka.clients.producer.ProducerRecord
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 KafkaProducer<>(props);
producer.send(new ProducerRecord<>("your-topic", "your_JSON_here");
producer.close();

通过这种方式,您将有信心JMeter发送您的JSON";"照原样";而没有任何由插件引入的最终转换

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

最新更新