如何解决消息的键和值的不同模式类型
我想知道是否允许使用JSON密钥架构和AVRO值架构生成消息。
生产者记录的混合和匹配模式类型是否受到限制?
架构注册表是否禁止它? 这被认为是不好的做法吗?
解决方法
混合消息没有这种限制。 Kafka存储字节;它不关心序列化,但是该主题的随机使用者可能不知道如何使用数据,因此对这两种方法使用Avro(或Protobuf)都是一个好主意
,您可以将UTF-8文本用作键,将Avro用作值。您可以同时拥有Avro。当我尝试使用Kafka REST且消息发送时密钥不是avro格式时,我无法使用使用者。基于issue的情况似乎仍然如此,但是如果您实现自己的生产者和消费者,则可以决定以哪种方式进行编码/解码。
您必须小心按键。基于密钥,消息将发送到特定的分区,在大多数情况下,消息应按时间顺序排列,但是只有将消息转到相同的分区才能实现。如果您有userId
或任何其他标识符,则可能要将该用户的所有事件发送到同一分区,因此请使用userId
作为键。除非您的密钥是基于几个字段,否则我不会使用json作为密钥,但是您必须小心,不要以不同分区上的消息结尾。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。