2.2. (预览)记录验证过滤器


Record Validation 过滤器验证由制作者发送的记录。只有通过验证的记录才会发送到代理。此过滤器可用于防止 poison 信息(如包含损坏的数据或无效格式的用户)从输入 Kafka 系统,否则可能会导致消费者失败。

过滤器目前支持两种操作模式:

  1. 模式 Validation 确保记录的内容符合 Apicurio Registry 中存储的模式。
  2. JSON 语法验证可确保记录的内容包含语法有效的 JSON。

可以应用验证规则来检查 Kafka 记录键或值的内容。

如果验证失败,产品请求将被拒绝,生成的应用程序会收到错误响应。代理不会接收被拒绝的记录。

注意

这个过滤器目前为 incubation,作为技术预览提供。我们不建议在生产环境中使用它。

2.2.1. (预览)设置记录验证过滤器

这个步骤描述了如何设置 Record Validation 过滤器。提供过滤器配置和规则,用于针对 Kafka 记录键和值检查。

先决条件

  • Apache Kafka 代理的 Streams 实例。有关为 Apache Kafka 代理部署流的详情,请参考 示例和示例
  • Streams for Apache Kafka Proxy 的配置映射,其中包含用于创建虚拟集群的配置。
  • Apicurio Registry (如果希望使用 Schema 验证)。

流程

  1. 配置 RecordValidation 类型过滤器。
filters:
  - type: RecordValidation
    config:
        rules:
        - topicNames:                                                  
1

            - <topic name>
          keyRule:
            <rule definition>                                          
2

          valueRule:
            <rule definition>                                          
3

        defaultRule:                                                   
4

          keyRule:
            <rule definition>                                          
5

          valueRule:
            <rule definition>                                          
6

        forwardPartialRequests: false                                  
7
1
验证规则要应用到的主题名称列表。
2 5
应用到记录的密钥的验证规则。
3 6
应用到记录的值的验证规则。
4
(可选)应用于任何没有定义意外规则的主题的默认规则。
7
如果为 false,则任何记录失败验证将导致整个生成请求被拒绝。如果为 true,则只有请求中所有记录都成功转发到代理的分区。客户端收到的响应将是混合响应,并将响应从代理返回,用于记录通过验证失败的分区的验证和错误响应。如果客户端使用事务,则 忽略此设置。任何失败的记录验证都会导致整个生成的请求被拒绝。

根据您的要求,将 YAML 配置中的 token <rule definition> 替换为 Schema Validation 规则或 JSON 语法验证规则。

架构验证规则定义示例

Schema Validation 规则验证规则验证,键或值是否与 Apicurio Schema Registry 中的全局 ID 标识的模式匹配。

如果 key 或 value 不遵循 schema,则记录将被拒绝。

另外,如果 kafka producer 在记录中嵌入了一个全局 ID,它将针对规则定义的全局 ID 验证。如果不匹配,则记录将被拒绝。如需了解有关如何将全局 ID 嵌入到记录中的详细信息,请参阅 Apicurio 文档。过滤器支持从 Apicurio globalId 记录标头或序列化内容本身的初始字节提取 ID。

schemaValidationConfig:
    apicurioGlobalId: 1001                                       
1

    apicurioRegistryUrl: http://registry.local:8080              
2

allowNulls: true                                                 
3

allowEmpty: true                                                 
4
1
Apicurio registry 全局 ID,标识将强制执行的模式。
2
Apicurio Registry 端点。
3
如果为 true,则验证器允许键和或 值为空。默认值为 false
4
如果为 true,则验证器允许键和或值为空。默认值为 false
注意

模式验证模式目前只能强制使用 JSON 模式(问题)

JSON 语法验证规则定义示例

JSON 语法验证规则验证键或值仅包含正确的 JSON。

syntacticallyCorrectJson:
    validateObjectKeysUnique: true                               
1

allowNulls: true                                                 
2

allowEmpty: true                                                 
3
1
如果为 true,则验证器会强制对象密钥必须是唯一的。默认值为 false
2
如果为 true,则验证器允许键和或 值为空。默认值为 false
3
如果为 true,则验证器允许键和或值为空。默认值为 false
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部