无法确定kafka JdbcSourceConnector.java是否正在向主题写入数据

时间:2018-03-18 14:59:26

标签: java apache-kafka apache-kafka-connect

这是我的个人研究 目标:将数据从表流式传输到Kafka主题,然后从Kafka主题中使用该数据以写入文件。

使用的API:我目前正在尝试使用Kafka Connectors,JdbcSourceConnector类是精确的。

约束:使用Confluent Java API而不是通过CLI或执行提供的shell脚本来执行此操作。

我做了什么:创建一个JdbcSourceConnector.java类的实例,并通过提供Properties对象作为参数来调用此类的start(Properties)方法。此属性对象具有数据库连接属性,表白名单属性,主题前缀等。

问题:

  1. 启动线程后,我无法从“topic-prefix-tablename”主题中读取数据。只需调用start()方法就可以将数据放到主题中,还是应该实例化JdbCSourceTask类?
  2. 使用JdbcSourceConnector类将数据放入主题后,我们可以使用普通的Kafka使用者来使用数据,还是需要编写JdbcSinkConnector类?
  3. 是否有一个简单的java API教程页面/示例代码我可以参考,因为我看到的所有示例都使用CLI / shell脚本?
  4. 感谢任何帮助

1 个答案:

答案 0 :(得分:0)

为什么要尝试直接使用Java API? JDBC Source连接器和FileStream Sink连接器实现了Kafka Connect API并完全按照您的要求执行操作。 this article here中的示例说明了这一点。

如果要转换数据,则可以使用Kafka Streams或KSQL来使用要写入的主题并应用所需的转换。如果您想在Kafka Connect工作流程本身中进行简单的转换,也可以查看Single Message Transform

所以你有:

[database] --- Kafka Connect 
                JDBC source   --> [ Kafka topic A ]
                                         |
                                         |
                                    Kafka Streams 
                                       or KSQL
                                         |
                                         |
                                         V
                                  [ Kafka topic B] -- Kafka Connect --> [ /tmp/foo ]
                                                       File Sink