【问题标题】:Shared Avro Schema files and version control共享 Avro Schema 文件和版本控制
【发布时间】:2019-04-28 11:11:02
【问题描述】:

共享 Avro 架构/生成的源的最佳做法是什么?

我有两个通过 Kafka 进行通信的 Java 应用程序。 我的想法是对在应用程序之间流动的事件使用 Avro 模式。 因此,将 Avro 模式提取到共享库中似乎是个好主意。但是这里的最佳实践是什么?通常生成的文件不存储在源代码管理中。但是 Avro 生成的 Java 类也是如此。如果不是 - 那么每个消费者都必须在编译时生成自己的类。(但如果模式在 maven、gradle 等依赖项中,这是否可能)

【问题讨论】:

    标签: java version-control avro


    【解决方案1】:

    总体而言,版本控制很好,但您应该忽略生成的源,例如那些最终位于 Maven 中的 target 文件夹中的源。

    生成的 Java 类可以进入放置在 Nexus/Artifactory 中的共享库,例如在mvn deploy 期间,并且可以从那里进行适当的版本化以供消费者使用。

    在 avro-maven-plugin 生成的类中,模式可用作静态字段,因此您无需将这些资源复制到包中。

    否则,假设您正在使用 Confluent Schema Registry,您可以在您的消费者中使用 GenericRecord 类型,然后像通常解析 JSON 消息一样解析消息。例如。 Object fieldName = message.value().get("fieldName"),同时生产者仍然可以有一个特定的 Avro 类

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-08
      • 1970-01-01
      • 2011-01-28
      • 2018-12-26
      • 2016-09-26
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      相关资源
      最近更新 更多