我是一个消费者,为了类型安全,我想在Avro中使用SpecificRecord,以避免从GenericRecord手动映射对象。根据我的理解,仍然与模式注册表集成对我来说意义不大,因为我无法对消费者代码中的新模式做任何事情。请注意,模式注册中心为任何模式更改启用了完全传递模式(我知道默认值仍然可以更改,并且可能导致破坏更改)。
为什么在消费者代码中同时使用模式注册表和SpecificRecord?
发布于 2021-04-28 04:17:48
我可以回答我自己的问题,因为我们已经尝试过了,如果您想要进行模式演化,就不可能同时使用模式注册表和SpecificRecord。您的代码只是在运行时中断,因为它找不到所需的版本。因此,使用Avro和模式演化的唯一方法是通过GenericRecord,并且在SpecificRecord的情况下与模式注册表集成没有任何价值。
这与Protobuf相比,在Protobuf中,您同时拥有生成的代码和模式演变。
https://stackoverflow.com/questions/64568949
复制相似问题