我正在使用Kafka和架构注册表。在生产者端使用融合的KafkaAvroSerializer定义了一个模式。一切正常。
另一方面,如果生产者在不遵循模式的情况下发布事件,则发布该事件不会有任何问题。
了解到Kafka只是序列化了二进制文件,没有检查数据,并且功能按设计工作。
想知道是否有更好的方法来执行更强的模式验证,以使主题不会被不良数据污染?
答案 0 :(得分:1)
在创建主题时使用以下“ --config”标签。这些分别对值和键实施消息模式验证。这两个规则彼此独立。您可以启用一个或全部启用。不符合要求的消息将导致客户端从kafka代理接收错误。
https://www.confluent.io/blog/data-governance-with-schema-validation/
confluent.value.schema.validation=true
confluent.key.schema.validation=true
答案 1 :(得分:0)
如果使用的是Schema Registry and KafkaAvroSerializer,它会按预期工作。架构注册表的重要方面是支持架构演进,架构可以随着时间而变化。每个事件都将具有Wire格式的嵌入式模式ID,这将允许在用户端反序列化事件。
但是,如果您想在写入Kafka主题之前进行严格的架构验证,则有两种选择-
SpecificRecord
类型