反序列化期间的使用者模式更新

llycmphe  于 2021-06-06  发布在  Kafka
关注(0)|答案(1)|浏览(326)

我目前正在研究avro模式系统,据我所知,模式更新的流程是:
1) 客户机更改模式(可能通过添加一个具有向后兼容性默认值的新字段),并将数据发送到kafka,并使用更新的模式序列化。
2) schema registry执行兼容性检查,并使用新版本和唯一id注册架构的新版本。
3) 使用者(仍然使用旧模式)尝试反序列化数据,而模式演化会删除新字段,从而允许使用者反序列化数据。
根据我的理解,在模式更改之后,我们需要显式地更新消费者,以便为他们提供最新的模式。但是,为什么消费者看到id发生了变化就拉最新的模式呢?

zbdgwd5y

zbdgwd5y1#

如果使用者模式使用specifirecord子类,则需要更新它们。这实际上跳过了schema id查找
如果您希望它总是匹配最新的,那么您可以对注册表进行http调用,以/latest获取它,然后重新启动应用程序。
或者,如果您总是希望消费者使用消息的id,请使用 GenericRecord 作为对象类型

相关问题