Debezium MySQL Avro Worker容器启动失败:找不到AvroConverter类
解决Debezium Connect启动时找不到io.confluent.connect.avro.AvroConverter的问题
这个报错的核心原因是:Debezium官方的connect镜像(quay.io/debezium/connect:2.0)默认不包含Confluent提供的Avro Converter依赖,io.confluent.connect.avro.AvroConverter类属于Confluent的kafka-connect-avro-converter组件,需要额外添加。下面是几种可行的解决办法:
方法一:使用Debezium预构建的含Confluent组件的镜像
Debezium官方提供了集成Confluent Avro相关依赖的镜像,直接替换原有镜像即可:
- 打开
docker-compose-mysql-avro-worker.yaml文件 - 找到connect服务的
image配置行,将quay.io/debezium/connect:${DEBEZIUM_VERSION}修改为quay.io/debezium/connect:${DEBEZIUM_VERSION}-confluent - 重新执行启动命令:
docker-compose -f docker-compose-mysql-avro-worker.yaml up
方法二:自定义构建包含Confluent依赖的镜像
如果需要自定义镜像内容,可以自己构建镜像并添加Confluent的Avro转换器:
- 创建名为
Dockerfile的文件,内容如下:FROM quay.io/debezium/connect:2.0 ENV CONFLUENT_VERSION=7.3.0 RUN confluent-hub install --no-prompt confluentinc/kafka-connect-avro-converter:${CONFLUENT_VERSION} - 构建自定义镜像:
docker build -t my-debezium-connect-avro:2.0 . - 修改
docker-compose-mysql-avro-worker.yaml中connect服务的image为你构建的自定义镜像,再重新启动容器。
方法三:改用Debezium自带的Avro转换器(可选)
如果不需要Confluent的Avro格式,可以替换为Debezium原生的ByteBufferConverter,它也支持Avro序列化:
在docker-compose的connect服务环境变量中修改配置:
CONNECT_KEY_CONVERTER: io.debezium.converters.ByteBufferConverter CONNECT_VALUE_CONVERTER: io.debezium.converters.ByteBufferConverter
注意:使用这个转换器时,需要调整相关的schema配置,确保和组件兼容。
验证方法
容器启动后,通过以下方式确认问题解决:
- 查看容器日志,确认没有
ConfigException报错 - 调用Connect的REST API检查插件:
输出中应包含你使用的转换器类。curl http://localhost:8083/connector-plugins
内容的提问来源于stack exchange,提问作者user19483562
相关产品推荐
相关产品推荐

