【问题标题】:How to figure out avro version used?如何确定使用的 avro 版本?
【发布时间】:2021-08-01 18:33:19
【问题描述】:

我拥有不受我控制的 Confluent 注册表,以及基于 @kafkajs/confluent-schema-registry 的生产者。有什么方法可以让我了解使用的是哪个版本的消息格式?

我可以得到编码的AVRO 消息,但它只是字节流。有什么方法可以了解它实际上是哪个版本的消息?

【问题讨论】:

    标签: javascript apache-kafka avro confluent-schema-registry


    【解决方案1】:

    我看到你正在使用 Confluent,他们有自己的有线格式版本。

    嵌入在前导字节中的是架构 ID,可用于从其架构注册表中获取架构:

    https://docs.confluent.io/platform/current/schema-registry/serdes-develop/index.html#wire-format

    我不确定如何在 Javascript 中操作字节,但我们在 Scala 中做了什么:

    1. 删除第一个字节
    2. 读取接下来的 4 个字节将其转换为整数
    3. 剩余字节可以使用从 Schema Registry 中获取的模式进行反序列化。

    /旁注: 真正令人讨厌的是这是一种特定于供应商的格式,尽管 Apache Avro 规范表示包含架构信息的 Single-object encoding

    此外,Confluent 似乎对支持 Apache Avro 格式不感兴趣。 https://github.com/confluentinc/schema-registry/issues/1294

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-15
      • 1970-01-01
      • 1970-01-01
      • 2022-12-11
      • 2015-07-15
      • 2017-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多