如何使用JMeter将avro消息发布到Kafka主题

zbsbpyhn  于 2023-01-25  发布在  Apache
关注(0)|答案(1)|浏览(190)

我正在尝试使用JMeter发布一个关于Kafka主题的Avro消息。
我收到以下错误消息:
原因:javax.script.ScriptException脚本异常:org.apache.kafka.common.errors.SerializationException:检索Avro模式“字符串”时出错
我使用JSR223采样器使用以下代码。
Kafka_BROKERS、KAFKA_TOPIC和MESSAGE在用户定义的变量中传递。

import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;

String brokers = vars.get("KAFKA_BROKERS");
String topic = vars.get("KAFKA_TOPIC");
String user = String.valueOf(ctx.getThreadNum() + 1);
Object msg = vars.get("MESSAGE");

Properties kafkaProps = new Properties();

kafkaProps.put("bootstrap.servers", brokers);
kafkaProps.put("schema.registry.url","https://\<\>");
kafkaProps.put("auto.register.schemas","false");
kafkaProps.put("basic.auth.credentials.source","USER_INFO");
kafkaProps.put("basic.auth.user.info","\<\>");
kafkaProps.put("security.protocol","SASL_SSL");
kafkaProps.put("sasl.mechanism","PLAIN");
kafkaProps.put("key.serializer","org.apache.kafka.common.serialization.StringSerializer");
kafkaProps.put("value.serializer","io.confluent.kafka.serializers.KafkaAvroSerializer");
kafkaProps.put("sasl.jaas.config","org.apache.kafka.common.security.plain.PlainLoginModule required username='\<\>' password='\<\>';");

Producer\<String, Object\> producer = new KafkaProducer\<\>(kafkaProps);
try
{
producer.send(new ProducerRecord\<String, Object\>(topic, user, msg)).get();
}
finally
{
producer.close();
}

收到以下错误消息:
原因:javax.script.ScriptException脚本异常:org.apache.kafka.common.errors.SerializationException:检索Avro模式“字符串”时出错

fwzugrvs

fwzugrvs1#

您需要配置kafkaProps对象,配置方式与您要模拟的上游系统完全相同。
作为一种解决方法,您可以启用自动模式注册,如下所示:

kafkaProps.put("auto.register.schemas","true");

更多信息:How to Do Kafka Testing With JMeter

相关问题