Kafka连接器转换器按主题名称检索架构

z0qdvdin  于 2023-01-08  发布在  Apache
关注(0)|答案(1)|浏览(154)

如果模式名称不遵循topicNameStrategy的模式,即-value,则连接器将抛出异常:

Caused by: org.apache.kafka.common.errors.SerializationException: Error retrieving Avro value schema version for id 11025
Caused by: io.confluent.kafka.schemaregistry.client.rest.exceptions.RestClientException: Subject not found. io.confluent.rest.exceptions.RestNotFoundException: Subject not found.
io.confluent.rest.exceptions.RestNotFoundException: Subject not found.
        at io.confluent.kafka.schemaregistry.rest.exceptions.Errors.subjectNotFoundException(Errors.java:51)
        at io.confluent.kafka.schemaregistry.rest.resources.SubjectsResource.lookUpSchemaUnderSubject(SubjectsResource.java:93)

查看schema-registry www.example.com中lookUpSchemaUnderSubject的模式注册表代码SubjectsResource.java,可以看出客户端尝试通过主题查找模式,而subjectName由topicNameStrategy构造
为什么不只是通过ID,因为全局ID在每个版本的每个模式中确实是唯一的?或者至少在找不到主题的情况下退一步,通过ID查找?

kmbjn2e3

kmbjn2e31#

一个可能的原因是-全局ID没有跨记录兼容性的概念,这只是在主题版本的范围内定义的。
作为一种解决方法,您可以简单地提取错误中列出的全局ID,然后将其作为所需的主题发布到注册表,并重新启动连接器。
否则,如果数据已经是bytes,且注册表中存在该ID,则不要使用ByteArrayConverter以外的任何转换器。否则,如果使用AvroConverter,则最终得到的模式类型为bytes,而不是真实的的记录。

相关问题