我正在学习 Kafka,对我来说,使用 Avro 来使用带有 Schema 的 Kafka 主题是有意义的。
但是当谈到架构定义的放置位置时,我遗漏了一些东西:
如果我不使用模式注册表,但在我的项目中有 Avro 文件,我可以生成 Java 类并在发送消息时将其用作抽象层。这非常好,但现在我在多个项目中有这个文件的多个版本。我可以想象让它们保持同步会受到伤害。
如果我使用模式注册表,上面的问题就解决了。但是现在我看不到在生成消息时从模式定义中获利的方法:我需要手动生成 GenericRecord 对象以发送到 Kafka,而且我无法查看我生成的消息是否与模式匹配。
我也看不到使用模式来反序列化消费者端的消息的方法。
在序列化和反序列化消息时,有什么方法可以从模式定义中获利?
我找不到任何在两端都这样做的例子,特别是使用模式注册表。