Kafka Connect Api - 入门?

时间:2016-03-21 21:01:20

标签: apache-kafka

我想了解Kafka连接模块的开发生命周期。

关注http://kafka.apache.org/090/documentation.html#connect,我想使用“connect api”编写自定义Kafka连接模块,但我不知道从哪里开始。有没有如何做到这一点的最小例子?项目设置等?

顺便说一下,我构建了这个https://github.com/confluentinc/kafka-connect-jdbc并尝试运行它(在谷歌云上),但我发现错误 - 显然缺少依赖,但我不知道要添加什么。当然,这可能只是应该在融合平台上运行。如果它可以在其他地方运行那么好。但如果它不能,我想知道如何从头开始构建一个因此我的问题。

java.lang.NoClassDefFoundError: org/apache/kafka/common/config/ConfigDef$Recommender
    at io.confluent.connect.jdbc.JdbcSourceConnector.start(JdbcSourceConnector.java:66)
    at org.apache.kafka.connect.runtime.Worker.addConnector(Worker.java:186)
    at org.apache.kafka.connect.runtime.standalone.StandaloneHerder.startConnector(StandaloneHerder.java:197)
    at org.apache.kafka.connect.runtime.standalone.StandaloneHerder.putConnectorConfig(StandaloneHerder.java:145)
    at org.apache.kafka.connect.cli.ConnectStandalone.main(ConnectStandalone.java:85) 

Caused by: java.lang.ClassNotFoundException: org.apache.kafka.common.config.ConfigDef$Recommender
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 5 more

3 个答案:

答案 0 :(得分:2)

此类错误的最常见原因是CLASSPATH的配置。要让Kafka Connect在运行时找到您的类,您需要将它们包含在类路径中。以下文字直接取自documentation of Kafka connect

  

安装新插件所需的只是将其放在Kafka Connect进程的CLASSPATH中。运行Kafka Connect的所有脚本都将使用CLASSPATH环境变量(如果在调用它们时设置它们),这样可以使用其他连接器插件轻松运行:

怎么做: export CLASSPATH=/path/to/my/connectors/* bin/connect-standalone standalone.properties new-custom-connector.properties

我还写了一篇你可能会觉得有帮助的how to guide for Kafka Connect

答案 1 :(得分:0)

kafka-clients.jar更新为kafka-clients-0.10.0.0.jar。旧版本不包含此类:org/apache/kafka/common/config/ConfigDef$Recommender.class

您可以在此处下载: http://central.maven.org/maven2/org/apache/kafka/kafka-clients/0.10.0.0/kafka-clients-0.10.0.0.jar

答案 2 :(得分:-1)

本来会将此作为评论添加,但SO表示我没有足够的分数。无论如何,这个答案的要点是证明JDBC Connector可以在不安装整个Confluent包和模式注册表的情况下运行。

我能够在不安装Confluent平台(特别是架构注册表)的情况下运行Confluent的JDBC连接器。运行连接器时,类路径中需要四个Confluent库(common-config,common-metrics,common-utils和kafka-connect)。有关更详细的说明,请参阅https://prefrontaldump.wordpress.com/2016/05/02/using-confluents-jdbc-connector-without-installing-the-entire-platform/