【发布时间】:2021-01-11 05:52:52
【问题描述】:
有没有办法配置 Confluent Schema Registry 和/或 Kafka Streams 以防止模式演变?
动机
我们有多个 Kafka Streams 作业为同一主题生成消息。所有作业都应该使用相同的模式发送消息,但是由于作业配置错误,其中一些作业发送的消息中缺少字段。这导致了下游问题,这是我们想要防止的。
当这种情况发生时,我们可以在架构注册表中看到预期的架构演变。
解决方案
我们检查了 Confluent Schema Registry 和/或 Kafka Streams 的文档,但找不到阻止模式演变的方法。
因此,我们考虑修改 Kafka Streams 作业以在发送之前从 Confluent Schema Registry 中读取模式。如果接收到的模式与消息的本地模式匹配,那么我们才会发送它们。
这是正确的方法还是我们错过了更好的选择?
更新:我们找到了一个article on medium,用于在发送之前根据架构注册表验证架构。
【问题讨论】:
-
您是否尝试将 SR 配置为“完全兼容”最严格的兼容性级别是什么?
-
嗨,Matthias,感谢您指出这一点!我们最终将 SR 设置为“完全兼容”,它为我们解决了这个问题。
标签: apache-kafka apache-kafka-streams confluent-schema-registry