jmeter - Jmeter kafka生产者负载测试发送字符串分隔的Json
问题描述
我正在尝试发送带有字符串分隔的json,例如
"carrierId":"XXX",
"eventProcessedTS":1618261255871,
"eventTS":1618261255871,
"deviceId":"XXX",
"event": "{\"deviceDetailsDataModel\":{\"eventDateTime\":1618261255871,\"vin\":\"XXXX\",\"deviceTimeZone\":\"XXXX\",\"deviceId\":\"XXXXX\"}}"
}
但是当我查看 kafka 消费者时,我收到的消息是
"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,而无需插件引入任何最终转换
推荐阅读
- r - R - 如何使用准引号动态构造变异函数名称
- mql5 - 在 mql5 中处理 json 字符串
- environment-variables - 如何使用 C# 和 VB.Net 编程语言创建、设置、读取和删除环境变量
- spring-data - 如何告诉 Spring Data Couchbase 嵌入或引用实体?
- django - TypeError:“ModelBase”对象不支持索引。
- java - Opentimestamps - 尝试反序列化 OTS 文件时出现 Java NullPointerException
- cluster-computing - 如何授予每个人对 HPC 集群中所有节点的 sudo 权限
- android - 如何解析从服务器拉出的矢量可绘制对象到视图?
- c# - SerialPort.GetPortNames() 创建 System.StackOverflowException
- cassandra - 使用 datastax 驱动程序将数据插入 cassandra