kafka rest代理json模式验证

px9o7tmv  于 2021-06-04  发布在  Kafka
关注(0)|答案(0)|浏览(319)

我想通过kafka rest代理生成一个kafka主题。我已经在schema注册表中创建了一个json模式,我希望所有消息都能根据注册的模式进行验证,如果它们与模式不匹配,就会被拒绝。
我的架构

{
  "type": "object",
  "properties": {
    "foo": {
      "type": "string",
    },
    "bar": {
      "type": "number" 
    }
  }
}

此架构已正确注册并分配给版本1。然后,我尝试为这两种类型生成一个数据类型错误的消息 foo 以及 bar 但是这个信息被接受了。

curl --location --request POST 'http://localhost:8082/topics/test' \
--header 'Content-Type: application/vnd.kafka.jsonschema.v2+json' \
--header 'Accept: application/vnd.kafka.v2+json' \
--data-raw '{
    "value_schema_id": 1,
    "records": [
        {
            "value": {
                "foo": 10,
                "bar":"not a number"
            }
        }
    ]
}'

注意,我正在制作 test 主题具有关联的架构,但错误消息get无论如何都被接受。我还尝试添加 "value_schema_id": 1 以确保有效负载中引用了架构,但仍接受错误消息。
但是,如果我将json模式作为 value_schema 它按预期工作

{
    "value_schema": "{\"type\": \"object\",\"properties\": {\"foo\": {\"type\": \"string\"},\"bar\": {\"type\": \"number\"}}}",
    "records": [
        {
            "value": {
                "foo": "10",
                "bar": "1"
            }
        }
    ]
}

响应

{
    "error_code": 42203,
    "message": "Conversion of JSON to Object failed: Failed to convert JSON using JSON Schema: #/bar: expected type: Number, found: String"
}

问题:在生成消息时是否可以引用现有的模式id,而不必每次都传递整个json模式?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题