You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Strimzi Kafka S3 Sink报ProtobufConverter类找不到错误

问题根因
  • 核心报错直接原因:Strimzi官方提供的默认Kafka Connect镜像未内置Confluent Protobuf Converter组件,io.confluent.connect.protobuf.ProtobufConverter属于Confluent Schema Registry配套的序列化转换插件,不在默认镜像的插件加载路径中,因此连接器启动时无法找到对应类抛出异常。
  • 现有配置存在3处额外不匹配问题:
    • 生产者代码中消息Key使用StringSerializer序列化为普通字符串,并非Protobuf格式,当前连接器给key.converter配置ProtobufConverter本身不符合数据格式,即使插件安装完成也会抛出Key序列化失败错误。
    • 生产者写入的Topic名为protos_topic_cards,连接器配置的消费Topic为testing-stack-overflow-topic,二者名称不匹配,即使其他配置正常也无法消费到对应数据。
    • 转换器配置中Schema Registry地址写为localhost:8081,在Kubernetes集群环境中该地址指向Kafka Connect容器自身,无法访问到实际部署的Schema Registry服务,后续会触发连接失败错误。
解决方案
  • 构建包含Protobuf Converter插件的自定义Kafka Connect镜像
    以你当前使用的同版本Strimzi Kafka Connect镜像为基础,将和Schema Registry版本匹配的kafka-connect-protobuf-converter插件包解压到镜像内的/opt/kafka/plugins/对应目录下,保证插件路径被Kafka Connect的插件扫描机制识别。参考Dockerfile示例:
    # *基础镜像版本必须和你当前集群运行的Strimzi Kafka Connect版本完全一致*
    FROM quay.io/strimzi/kafka:0.38.0-kafka-3.6.0
    USER root:root
    # 将提前下载好的对应版本Protobuf Converter压缩包拷贝到镜像内并解压到插件目录
    COPY kafka-connect-protobuf-converter.zip /tmp/
    RUN mkdir -p /opt/kafka/plugins/protobuf-converter \
        && unzip /tmp/kafka-connect-protobuf-converter.zip -d /opt/kafka/plugins/protobuf-converter \
        && rm /tmp/kafka-connect-protobuf-converter.zip
    USER 1001
    
    镜像构建完成后推送到你的私有镜像仓库,修改KafkaConnect自定义资源的spec.image字段为自定义镜像地址,等待集群滚动重启完成后插件即可被正常加载。
  • 修正连接器转换器配置
    由于消息Key为字符串格式,将Key转换器修改为StringConverter,删除Key相关的Protobuf专属配置,Value部分保留ProtobufConverter配置,同时修正Schema Registry地址为K8s集群内可访问的Service地址。修正后的核心配置段如下:
    config:
      # 其余原有S3相关配置保持不变,仅调整转换器相关配置
      key.converter: "org.apache.kafka.connect.storage.StringConverter"
      value.converter: "io.confluent.connect.protobuf.ProtobufConverter"
      # *注意不要使用localhost作为地址,需填写K8s集群内Schema Registry对应的Service DNS地址*
      value.converter.schema.registry.url: "http://<schema-registry对应的K8s服务名>:8081"
      value.converter.schemas.enable: true
    
  • 修正Topic名称匹配问题
    统一连接器和生产者侧的Topic名称,要么将连接器配置中topics字段修改为生产者实际写入的protos_topic_cards,要么将生产者代码中指定的Topic名改为连接器配置的testing-stack-overflow-topic,保证消费侧和生产侧的Topic名称完全一致。

内容的提问来源于stack exchange,提问作者Nicholas Rinaldi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 15:09:20