Protobuf 的 Kafka 模式注册表
Posted
技术标签:
【中文标题】Protobuf 的 Kafka 模式注册表【英文标题】:Kafka Schema Registry for Protobuff 【发布时间】:2021-11-27 09:27:07 【问题描述】:生产者在发送消息时使用的模式如何登陆 kafka 模式注册表,因为生产者只会知道生成的 protobuff 消息的类。
另外,消费者如何使用模式注册表,模式在消费时除了检测不兼容之外将扮演什么角色。
据我了解,消费者已经在 protobuff 代码生成器创建的类的对象中接收消息
【问题讨论】:
【参考方案1】:生成的类有一个获取其原型定义的方法(Message#getDescriptorForType()
)。当消息被序列化时,这个方法被调用,并且模式作为文本通过 HTTP 发送到注册表,并返回一个 ID。这个ID存储在Kafka记录中;实际的架构不是。
当消费者从 Kafka 收到字节数组时,它会找到 ID,向注册表发出 HTTP GET 请求,然后下载模式并使用它来反序列化消息的其余部分。
source code is available 让您更好地理解这一点。
【讨论】:
欢迎使用帖子旁边的复选标记接受答案以上是关于Protobuf 的 Kafka 模式注册表的主要内容,如果未能解决你的问题,请参考以下文章
使用 Spring-Kafka 和 Confluent 模式注册表将带有 JSON 模式的记录发送到 Kafka