Kafka REST v3支持的schema格式是什么?schema使用报错相关咨询
Kafka REST v3相关问题解答
1. Kafka REST v3支持的Schema格式
Kafka REST v3 共支持3种Schema格式,均需配合Confluent Schema Registry使用:
- Avro
- Protobuf
- JSON Schema
2. Schema Registry与Kafka REST的依赖关系说明
你的假设不成立。Schema Registry与Kafka Rest存在明确的版本兼容要求,二者同属Confluent Platform配套组件,Kafka Rest内部集成了Schema Registry的客户端实现,跨大版本使用时极易出现API协议不兼容、序列化/反序列化逻辑不一致的问题。你在6.2.1版本Kafka Rest上复现相同报错,大概率就是版本不匹配引发的schema获取逻辑异常。
3. 报错根因及修复方案
对应报错信息:
"Error when fetching schema version. subject = test-key, schema = [{\"type\":\"record\",\"name\":\"countInfo\",\"fields\":[{\"name\":\"count\",\"type\":\"long\"}]}]"原请求报文:
{ "key": { "subject_name_strategy": "TOPIC_NAME", "schema_id": 8, "data": 1000 }, "value": { "data": { "countInfo": { "count": 0 } } } }
根因说明
- key与value的schema混用:报错显示
test-key主题对应的schema为countInfo的record结构,但原请求中key的data为数值1000,与schema结构完全不匹配,countInfo结构反而被放在了value字段中,属于参数传递错误。 - 参数缺失:Kafka REST v3 API要求使用schema序列化时,value字段也必须明确指定
schema_id、schema或subject_name_strategy参数,原请求未配置value的schema相关参数,会触发Kafka REST自动尝试匹配或注册schema,进一步引发报错。
修复方案
- 先确认Schema Registry中
test-key和test-value两个subject对应的schema内容和schema_id,确保key的data匹配test-key的schema结构,value的data匹配test-value的schema结构。 - 补全请求中value的schema相关参数,参考结构如下:
{ "key": { "subject_name_strategy": "TOPIC_NAME", "schema_id": "替换为test-key对应的正确schema id", "data": "替换为匹配test-key schema的内容" }, "value": { "subject_name_strategy": "TOPIC_NAME", "schema_id": "替换为countInfo对应的test-value的schema id", "data": { "countInfo": { "count": 0 } } } }
- 统一Kafka REST与Schema Registry的Confluent Platform大版本,避免跨版本兼容问题。
内容的提问来源于stack exchange,提问作者Irina
相关产品推荐
相关产品推荐

