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

自定义Kafka连接器未被识别求助(无网络无法使用Maven)

自定义Kafka连接器加载问题排查方案

一、必须遵循的插件文件夹结构

Kafka Connect对插件目录结构有硬性要求,哪怕PluginClassLoader检测到路径,结构不对也不会加载连接器:

  • 每个自定义连接器必须单独放在一个子目录里,示例结构:
    # 假设你的plugin.path配置为/opt/kafka-connectors
    /opt/kafka-connectors/
    ├── my-custom-source-connector/
    │   ├── my-connector-core.jar
    │   └── commons-lang3-3.12.0.jar  # 连接器依赖的第三方jar
    └── another-connector/
        └── another-connector.jar
    
  • 禁止把多个连接器的jar直接堆在plugin.path根目录下,必须一个连接器对应一个子文件夹
  • 所有依赖jar要和连接器主jar放在同一个子目录,保证ClassLoader能加载到完整依赖

二、离线打包Jar的核心要求(无需Maven网络)

没法用Maven在线构建的话,打包时必须满足以下两点,否则连接器不会被识别:

  1. 声明连接器类路径
    在jar包的META-INF/services目录下,创建名为org.apache.kafka.connect.connector.Connector的文件,文件里只写你自定义连接器类的完整包名+类名,比如:
    com.company.MyCustomSinkConnector
    
    要是你的连接器是Source类型,同样要创建org.apache.kafka.connect.source.SourceConnector文件,写入对应类路径(Sink则是org.apache.kafka.connect.sink.SinkConnector)
  2. 依赖处理
    • 如果你用jar命令手动打包,把依赖类和连接器类一起打进jar,或者把依赖jar和主jar放在同一个插件子目录
    • 手动打包命令示例:
      jar cvfm my-connector.jar manifest.txt com/ lib/
      
      其中manifest.txt可指定主类(非必须,但规范):
      Main-Class: com.company.MyCustomSinkConnector
      
  3. 权限检查
    确保Kafka Connect进程能读取插件目录和jar文件,执行:
    chmod -R 755 /opt/kafka-connectors/my-custom-source-connector
    

三、额外排查要点

  • 仔细看Connect日志,有没有类加载失败的报错(比如找不到依赖类、JDK版本不兼容),这类错误会导致连接器不被加入列表
  • 确认自定义连接器类正确继承了SourceConnector或SinkConnector父类
  • 改完配置或调整文件结构后,必须重启Kafka Connect服务才能生效

内容的提问来源于stack exchange,提问作者suraj shinde

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 03:15:48