无法使用Kafka的JdbcSourceConnector从Oracle DB读取数据到kafka主题

时间:2019-06-12 15:45:51

标签: apache-kafka apache-kafka-connect

我正在尝试使用kafka-jdbc-connect API编写一个独立的Java程序,以将数据从oracle-table传输到kafka主题。

使用的API:我目前正在尝试使用Kafka连接器,确切地说是JdbcSourceConnector类。

约束:请使用Confluent Java API,而不要通过CLI或执行提供的Shell脚本来实现。

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

启动线程后,我无法从“ topic-prefix-tablename”主题中读取数据。我不确定如何将Kafka Broker详细信息传递给JdbcSourceConnector。在JdbcSourceConnector启动线程上调用start()方法,但不执行任何操作。 因为我看到的所有示例都使用CLI / shell脚本,所以我可以参考一个简单的Java API教程页面/示例代码吗?

感谢您的帮助

代码:

    public static void main(String[] args) {

        Map<String, String> jdbcConnectorConfig = new HashMap<String, String>();
        jdbcConnectorConfig.put(JdbcSourceConnectorConfig.CONNECTION_URL_CONFIG, "<DATABASE_URL>");
        jdbcConnectorConfig.put(JdbcSourceConnectorConfig.CONNECTION_USER_CONFIG, "<DATABASE_USER>");
        jdbcConnectorConfig.put(JdbcSourceConnectorConfig.CONNECTION_PASSWORD_CONFIG, "<DATABASE_PASSWORD>");
        jdbcConnectorConfig.put(JdbcSourceConnectorConfig.POLL_INTERVAL_MS_CONFIG, "300000");
        jdbcConnectorConfig.put(JdbcSourceConnectorConfig.BATCH_MAX_ROWS_CONFIG, "10");
        jdbcConnectorConfig.put(JdbcSourceConnectorConfig.MODE_CONFIG, "timestamp");
        jdbcConnectorConfig.put(JdbcSourceConnectorConfig.TABLE_WHITELIST_CONFIG, "<TABLE_NAME>");
        jdbcConnectorConfig.put(JdbcSourceConnectorConfig.TIMESTAMP_COLUMN_NAME_CONFIG, "<TABLE_COLUMN_NAME>");
        jdbcConnectorConfig.put(JdbcSourceConnectorConfig.TOPIC_PREFIX_CONFIG, "test-oracle-jdbc-");


        JdbcSourceConnector jdbcSourceConnector = new JdbcSourceConnector ();
        jdbcSourceConnector.start(jdbcConnectorConfig);

    }

1 个答案:

答案 0 :(得分:0)

假设您尝试以独立模式进行操作。

在“应用程序”运行配置中,您的主类应为“ org.apache.kafka.connect.cli.ConnectStandalone”,并且您需要传递两个属性文件作为程序参数。

您还应该使用“ org.apache.kafka.connect.source.SourceConnector”类扩展“ your-custom-JdbcSourceConnector”类

主类: org.apache.kafka.connect.cli.ConnectStandalone

程序参数:。.\ path-to-config \ connect-standalone.conf。\ path-to-config \ connetcor.properties

“ connect-standalone.conf” 文件将包含所有Kafka经纪人详细信息。

// Example connect-standalone.conf
bootstrap.servers=<comma seperated brokers list here>

group.id=some_loca_group_id

key.converter=org.apache.kafka.connect.storage.StringConverter
value.converter=org.apache.kafka.connect.storage.StringConverter
key.converter.schemas.enable=false
value.converter.schemas.enable=false

internal.key.converter=org.apache.kafka.connect.json.JsonConverter
internal.value.converter=org.apache.kafka.connect.json.JsonConverter
internal.key.converter.schemas.enable=false
internal.value.converter.schemas.enable=false

offset.storage.file.filename=connect.offset

offset.flush.interval.ms=100
offset.flush.timeout.ms=180000
buffer.memory=67108864
batch.size=128000
producers.acks=1

connector.properties ”文件将包含创建和启动连接器所需的所有详细信息

// Example connector.properties
name=some-local-connector-name
connector.class=your-custom-JdbcSourceConnector    
tasks.max=3
topic=output-topic
fetchsize=10000

此处有更多信息:https://docs.confluent.io/current/connect/devguide.html#connector-example