Debezium示例报错:找不到io.confluent.connect.avro.AvroConverter类
解决Debezium Connect注册MySQL连接器时找不到io.confluent.connect.avro.AvroConverter类的400错误
在使用quay.io/debezium/connect:2.7.0.Final镜像,按照Debezium教程配置MySQL连接器时,执行curl注册命令返回400错误,提示:
无法找到io.confluent.connect.avro.AvroConverter类
问题原因
Debezium官方提供的Connect镜像默认不包含Confluent的AvroConverter组件,这个类属于Confluent Schema Registry的依赖组件,官方镜像未预装该内容。
解决方法
方法一:改用Debezium自带的JSON转换器(无需Schema Registry)
如果不需要使用Avro格式,可将连接器配置中的转换器替换为Debezium原生支持的JSON转换器:
{ "name": "inventory-connector", "config": { "connector.class": "io.debezium.connector.mysql.MySqlConnector", // 保留其他原有配置项 "key.converter": "org.apache.kafka.connect.json.JsonConverter", "value.converter": "org.apache.kafka.connect.json.JsonConverter", "key.converter.schemas.enable": "true", "value.converter.schemas.enable": "true" } }
方法二:构建包含Avro Converter的自定义Connect镜像
若必须使用Avro格式,需自行构建包含Confluent依赖的镜像:
- 创建
Dockerfile文件:
FROM quay.io/debezium/connect:2.7.0.Final USER root RUN confluent-hub install --no-prompt confluentinc/kafka-connect-avro-converter:7.3.0 USER kafka
- 执行镜像构建命令:
docker build -t my-debezium-connect:2.7.0.Final .
- 使用构建好的自定义镜像启动Connect服务,再重新注册连接器。
方法三:切换到Confluent官方Connect镜像
如果环境已部署Confluent Schema Registry,可直接使用Confluent官方的Connect镜像(默认包含Avro Converter):
docker run -d --name connect \ --link kafka:kafka \ --link schema-registry:schema-registry \ -e CONNECT_BOOTSTRAP_SERVERS=kafka:9092 \ -e CONNECT_GROUP_ID=connect-cluster \ -e CONNECT_CONFIG_STORAGE_TOPIC=connect-configs \ -e CONNECT_OFFSET_STORAGE_TOPIC=connect-offsets \ -e CONNECT_STATUS_STORAGE_TOPIC=connect-statuses \ -e CONNECT_KEY_CONVERTER=io.confluent.connect.avro.AvroConverter \ -e CONNECT_KEY_CONVERTER_SCHEMA_REGISTRY_URL=http://schema-registry:8081 \ -e CONNECT_VALUE_CONVERTER=io.confluent.connect.avro.AvroConverter \ -e CONNECT_VALUE_CONVERTER_SCHEMA_REGISTRY_URL=http://schema-registry:8081 \ confluentinc/cp-kafka-connect:7.3.0
内容的提问来源于stack exchange,提问作者Albert T. Wong
相关产品推荐
相关产品推荐

