共享的Avro架构文件和版本控制

时间:2018-11-26 18:53:56

标签: java version-control avro

共享Avro模式/生成的源的最佳实践是什么?

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

1 个答案:

答案 0 :(得分:0)

总的来说,版本控制是好的,但是您应该忽略生成的源,例如那些以Maven的target文件夹结尾的源。

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

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

否则,假设您正在使用Confluent Schema Registry,则可以在使用者中使用GenericRecord类型,然后像通常对JSON消息那样解析消息。例如。 Object fieldName = message.value().get("fieldName"),与此同时,制作人仍然可以使用特定的Avro类