Kafka Connect是否必须配置Schema Registry?无Schema Registry运行报错问题咨询
首先直接给结论:Kafka Connect 本身并不强制依赖 Schema Registry,这个错误完全是因为你当前使用的消息转换器(Converter)需要它。
为什么会触发这个错误?
你看到的 CONNECT_VALUE_CONVERTER_SCHEMA_REGISTRY_URL is required 错误,本质是因为你的 Connect 配置里指定了 Confluent 出品的带 Schema 感知的转换器,比如:
io.confluent.connect.avro.AvroConverterio.confluent.connect.protobuf.ProtobufConverterio.confluent.connect.json.JsonSchemaConverter
这类转换器设计之初就依赖 Schema Registry 来管理、存储和解析数据的结构定义,所以 Connect 启动时会自动检查对应的 URL 配置项是否存在。而你执行的 /usr/local/bin/dub ensure CONNECT_VALUE_CONVERTER_SCHEMA_REGISTRY_URL 命令失败,大概率是因为你根本没部署 Schema Registry,自然没法提供有效的 URL。
如何不依赖 Schema Registry 运行 Kafka Connect?
只需要把转换器换成 Kafka 原生自带的、不需要 Schema 支持的类型即可,比如:
方案1:使用字符串转换器
修改 Connect 的配置文件(或者环境变量):
key.converter=org.apache.kafka.connect.storage.StringConverter value.converter=org.apache.kafka.connect.storage.StringConverter
方案2:使用不带 Schema 的 JSON 转换器
如果你的数据是 JSON 格式,但不需要强制绑定 Schema,可以这样配置:
key.converter=org.apache.kafka.connect.json.JsonConverter value.converter=org.apache.kafka.connect.json.JsonConverter key.converter.schemas.enable=false value.converter.schemas.enable=false
什么时候才需要 Schema Registry?
只有当你需要使用结构化数据格式+Schema 管理能力时,才必须部署 Schema Registry,比如:
- 你要用 Avro、Protobuf 这类强类型格式来保证数据一致性
- 你需要在多个系统间共享和演进数据结构,避免兼容性问题
关于官方文档的补充
Confluent 的文档其实是分场景说明的:基础的 Kafka Connect 使用(比如用原生转换器)不会提到依赖 Schema Registry,但当你切换到他们的 Schema-aware 转换器时,文档里会明确标注需要搭配 Schema Registry 使用——可能你之前没注意到不同转换器对应的依赖差异。
内容的提问来源于stack exchange,提问作者Sarath Baiju

