【发布时间】:2022-02-07 15:36:50
【问题描述】:
我需要将 JSON 消息转换为 Avro,以便将其发送到 Kafka。
我有示例 JSON 请求以及来自 Avro 的 avsc 文件的架构。
请问有什么办法吗?
谢谢
【问题讨论】:
标签: json apache-kafka jmeter performance-testing avro
我需要将 JSON 消息转换为 Avro,以便将其发送到 Kafka。
我有示例 JSON 请求以及来自 Avro 的 avsc 文件的架构。
请问有什么办法吗?
谢谢
【问题讨论】:
标签: json apache-kafka jmeter performance-testing avro
你需要:
下载Avro Java libraries并将它们(连同dependencies)放到JMeter Classpath
重新启动 JMeter 以获取库
要添加一个合适的JSR223 Test Element 和相关的Groovy 代码来执行转换,下面是一段示例代码:
String schemaJson = 'your schema here'
String genericRecordStr = 'your json payload here'
def schemaParser = new org.apache.avro.Schema.Parser()
def schema = schemaParser.parse(schemaJson)
def decoderFactory = new org.apache.avro.io.DecoderFactory()
def decoder = decoderFactory.jsonDecoder(schema, genericRecordStr)
def reader = new org.apache.avro.generic.GenericDatumReader()(schema)
def record = reader.read(null, decoder)
要将消息发送到 Kafka,开箱即用的 JMeter 不支持 Kafka,Apache Kafka - How to Load Test with JMeter 文章中描述了几个选项
【讨论】:
假设“Avro”,您正在使用模式注册表。如果您能够安装 Kafka REST 代理,则可以向其发送 JSON 事件,然后可以将代理配置为与 Registry 集成以将 Avro 对象发送到代理
或者您可以编写自定义采样器,如另一个答案中链接的那样,但您需要将 StringSerializer 换成 Avro Serializer 实现(您需要将其添加到 Jmeter 类路径中)
【讨论】: