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

使用Schema Registry Transfer SMT插件时类找不到问题求助

排查Schema Registry Transfer SMT插件加载失败问题

核心错误信息

PUT /connectors/kafka-connector-sb-16-sb-16/config 返回400(Bad Request):Connector配置无效,包含2个错误:

  1. 配置transforms.AvroSchemaTransfer.type的值cricket.jmoore.kafka.connect.transforms.SchemaRegistryTransfer无效:找不到该类
  2. 配置transforms.AvroSchemaTransfer.type的值null无效:不是Transformation

排查步骤

1. 确认插件镜像的目录结构符合Strimzi要求

Strimzi Kafka Connect默认从/opt/kafka/plugins下的子目录加载插件,不能直接将JAR放在plugins根目录:

  • 检查Dockerfile,确保插件JAR被复制到plugins的子文件夹中,示例:
    COPY target/schema-registry-transfer-*.jar /opt/kafka/plugins/schema-registry-transfer/
    
  • 进入Connect Pod验证目录内容:
    kubectl exec <connect-pod-name> -- ls /opt/kafka/plugins/schema-registry-transfer
    

2. 验证插件JAR的兼容性与完整性

该插件仓库最后更新于2019年,依赖版本大概率与当前Strimzi集群不匹配:

  • 将插件的kafka-clients、connect-api依赖版本升级到与你的Kafka集群一致的版本,重新构建胖JAR(注意将Kafka核心依赖设为provided scope,避免与Connect内置依赖冲突)。
  • 检查胖JAR是否包含目标类:
    jar tf target/your-fat-jar.jar | grep SchemaRegistryTransfer
    

3. 确认Connect的插件加载逻辑

  • 查看Connect Pod日志,确认插件是否被加载:
    kubectl logs <connect-pod-name> | grep "SchemaRegistryTransfer"
    
  • Strimzi默认无需手动配置plugin.path,但如果自定义了该参数,需确保包含插件所在目录。
  • kubectl describe KafkaConnect未列出插件可能是Strimzi扫描逻辑未检测到,以Pod内实际目录和日志为准。

4. 修正Connector配置的语法错误

错误中出现值null无效,说明配置存在语法问题:

  • 检查Connector YAML配置,确保transforms.AvroSchemaTransfer.type只定义一次且值正确,示例:
    transforms: AvroSchemaTransfer
    transforms.AvroSchemaTransfer.type: cricket.jmoore.kafka.connect.transforms.SchemaRegistryTransfer
    # 插件其他配置参数
    

5. 替代方案(若插件升级不可行)

由于该插件长期未维护,可考虑:

  • 使用官方AvroConverter配合schema.registry.url实现Schema同步。
  • 自定义轻量SMT实现类似功能,避免依赖未维护的第三方插件。

内容的提问来源于stack exchange,提问作者Michał Sobczyk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 01:45:35