我有一个用例,我有一个 JSON,我想生成架构并从 JSON 中记录并发布记录。
我已经配置了值序列化器,并且架构设置是向后兼容的。
第一个 JSON
字符串 json = "{\n" +
" \"id\": 1,\n" +
" \"name\": \"Headphones\",\n" +
" \"price\": 1250.0,\n" +
" \"tags\": [\"home\", \"green\"]\n" +
"}\n"
;
已注册版本 1 架构。
在 avro 控制台消费者中收到消息。
第二个 JSON。
字符串 json = "{\n" +
" \"id\": 1,\n" +
" \"price\": 1250.0,\n" +
" \"tags\": [\"home\", \"green\"]\n" +
"}\n"
;
注册架构成功。
已发送消息。
现在尝试发送 JSON 1 发送成功
方案3:
字符串 json = "{\n" +
" \"id\": 1,\n" +
" \"name\": \"Headphones\",\n" +
" \"tags\": [\"home\", \"green\"]\n" +
"}\n"
;
在这种情况下出现错误。
引起原因:io.confluence.kafka.schemaregistry.client.rest.exceptions.RestClientException:正在注册的架构与早期架构不兼容;错误代码:409
从第二个 JSON 生成的模式是如何注册的以及
第三个被拒绝了?虽然我没有任何默认密钥
删除字段?模式注册表是否总是接受第一个
进化? (第 2 个模式优于第 1 个模式)
架构注册表中的架构
版本 1 架构
{
“字段”:[
{
"doc": "Type inferred from '1'",
"name": "id",
"type": "int"
},
{
"doc": "Type inferred from '\"Headphones\"'",
"name": "name",
"type": "string"
},
{
"doc": "Type inferred from '1250.0'",
"name": "price",
"type": "double"
},
{
"doc": "Type inferred from '[\"home\",\"green\"]'",
"name": "tags",
"type": {
"items": "string",
"type": "array"
}
}
],
"name": "myschema",
"type": "record" }
版本2:
{
“字段”:[
{
"doc": "Type inferred from '1'",
"name": "id",
"type": "int"
},
{
"doc": "Type inferred from '1250.0'",
"name": "price",
"type": "double"
},
{
"doc": "Type inferred from '[\"home\",\"green\"]'",
"name": "tags",
"type": {
"items": "string",
"type": "array"
}
}
],
"name": "myschema",
"type": "record" }