【问题标题】:Convert JSON to Avro in Jmeter在 Jmeter 中将 JSON 转换为 Avro
【发布时间】:2022-02-07 15:36:50
【问题描述】:

我需要将 JSON 消息转换为 Avro,以便将其发送到 Kafka。

我有示例 JSON 请求以及来自 Avro 的 avsc 文件的架构。

请问有什么办法吗?

谢谢

【问题讨论】:

    标签: json apache-kafka jmeter performance-testing avro


    【解决方案1】:

    你需要:

    1. 下载Avro Java libraries并将它们(连同dependencies)放到JMeter Classpath

    2. 重新启动 JMeter 以获取库

    3. 要添加一个合适的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)
      
    4. 要将消息发送到 Kafka,开箱即用的 JMeter 不支持 Kafka,Apache Kafka - How to Load Test with JMeter 文章中描述了几个选项

    【讨论】:

    • 谢谢,这很有用。我现在已经设法让 Jmeter 向 Kafka 等发送基本消息。我还在为 Avro 序列化部分苦苦挣扎。请问您如何使用 vars.put 将“记录”放入 Jmeter 变量中?我试过 vars.put("myparam", record) 但它似乎不起作用
    【解决方案2】:

    假设“Avro”,您正在使用模式注册表。如果您能够安装 Kafka REST 代理,则可以向其发送 JSON 事件,然后可以将代理配置为与 Registry 集成以将 Avro 对象发送到代理

    或者您可以编写自定义采样器,如另一个答案中链接的那样,但您需要将 StringSerializer 换成 Avro Serializer 实现(您需要将其添加到 Jmeter 类路径中)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-13
      • 2020-05-20
      • 2020-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-10
      相关资源
      最近更新 更多