Debezium 2.0中Confluent AvroConverter无法正常使用求助
Debezium 2.0版本移除了io.confluent.connect.avro.AvroConverter组件,我尝试手动下载该组件并注入到Debezium Connect部署中,但始终出现如下错误:

我的简化K8s部署配置如下:
apiVersion: apps/v1 kind: Deployment metadata: name: debezium spec: template: spec: initContainers: - name: download-kafka-connect-plugins image: alpine:3.16.2 command: - sh args: - -c - | wget https://packages.confluent.io/maven/io/confluent/kafka-connect-avro-converter/7.2.2/kafka-connect-avro-converter-7.2.2.jar cp kafka-connect-avro-converter-7.2.2.jar /kafka/connect-plugins volumeMounts: - name: kafka-connect-plugins mountPath: /kafka/connect-plugins volumes: - name: kafka-connect-plugins emptyDir: {} containers: - name: debezium-intelipost image: debezium/connect:2.0.0.Final volumeMounts: - name: kafka-connect-plugins mountPath: /kafka/connect-plugins env: - name: KAFKA_CONNECT_PLUGINS_DIR value: /kafka/connect-plugins
我还尝试注入kafka-schema-registry-client等相关组件,仍然无法正常运行。请问有没有人遇到过类似问题?
完整下载所有依赖包
单独只下载kafka-connect-avro-converter.jar不足以满足运行需求,该组件依赖大量Confluent类库(如Schema Registry客户端、通用工具包、Avro序列化包等)。可以用Maven的mvn dependency:copy-dependencies命令,针对io.confluent:kafka-connect-avro-converter:7.2.2导出所有依赖jar包,再将所有jar包统一放入插件目录。调整插件目录结构
Kafka Connect要求每个插件存放在独立子目录中,不能直接将所有jar包放在根插件目录下。修改Init容器脚本,创建专属子目录并存放所有相关jar包:mkdir -p /kafka/connect-plugins/kafka-connect-avro-converter # 下载主jar包到子目录 wget -P /kafka/connect-plugins/kafka-connect-avro-converter https://packages.confluent.io/maven/io/confluent/kafka-connect-avro-converter/7.2.2/kafka-connect-avro-converter-7.2.2.jar # 在此处添加所有依赖jar包的下载命令,统一放入该子目录验证版本兼容性
确认Confluent组件版本与Debezium 2.0适配的Kafka版本兼容:Debezium 2.0.0.Final基于Kafka 3.2.3,建议搭配Confluent 7.2.x版本(与Kafka 3.2.x兼容),避免版本不匹配引发类加载异常。改用Confluent基础镜像构建
若手动管理依赖过于繁琐,可基于Confluent官方cp-kafka-connect镜像构建自定义Debezium镜像,直接集成Avro Converter组件,规避手动注入带来的类路径问题。
内容的提问来源于stack exchange,提问作者Jonathan Chevalier

