为什么SourceConnectorConfig报告了接收器连接器?

时间:2017-10-21 09:55:40

标签: apache-kafka-connect

我尝试使用s predfast s3 connector创建Kafka接收器连接器。但是,由于某种原因,日志输出报告SourceConnectorConfig:

INFO ConnectorConfig values:
        connector.class = com.spredfast.kafka.connect.s3.sink.S3SinkConnector
        key.converter = null
        name = transactions-s3-sink
        tasks.max = 1
        transforms = null
        value.converter = class org.apache.kafka.connect.storage.StringConverter
 (org.apache.kafka.connect.runtime.ConnectorConfig:180)
INFO Creating connector transactions-s3-sink of type com.spredfast.kafka.connect.s3.sink.S3SinkConnector (org.apache.kafka.connect.runtime.Worker:178)
INFO Instantiated connector transactions-s3-sink with version 0.0.1 of type class com.spredfast.kafka.connect.s3.sink.S3SinkConnector (org.apache.kafka.connect.runtime.Worker:181)
INFO Finished creating connector transactions-s3-sink (org.apache.kafka.connect.runtime.Worker:194)
INFO SourceConnectorConfig values:
        connector.class = com.spredfast.kafka.connect.s3.sink.S3SinkConnector
        key.converter = null
        name = transactions-s3-sink
        tasks.max = 1
        transforms = null
        value.converter = class org.apache.kafka.connect.storage.StringConverter
 (org.apache.kafka.connect.runtime.SourceConnectorConfig:180)
INFO Finished starting connectors and tasks (org.apache.kafka.connect.runtime.distributed.DistributedHerder:824)
...
INFO Sink task WorkerSinkTask{id=transactions-s3-sink-0} finished initialization and start (org.apache.kafka.connect.runtime.WorkerSinkTask:232)

为什么在日志输出中进一步报告了SinkConnectorConfig我可以看到创建了WorkerSinkTask?

1 个答案:

答案 0 :(得分:1)

原因是此连接器从Connect的API中扩展snapsvg@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/snapsvg/-/snapsvg-0.4.0.tgz#e0767014167825957de7e125c29b0fa89796ea03" dependencies: eve "~0.4.2" 抽象类而不是Connector抽象类(请参阅源代码here)。

因此,Connect框架无法判断此连接器是源还是接收器,目前代码中的逻辑是,如果它不是接收器,则认为它是源。这就是您遇到这种不一致的原因。

解决方案是让连接器扩展适当的抽象类(此处为SinkConnector