汇合的 jdbc-source-connector 不能在 Java 中工作

Posted

技术标签:

【中文标题】汇合的 jdbc-source-connector 不能在 Java 中工作【英文标题】:confluent jdbc-source-connector not working from Java 【发布时间】:2020-11-02 02:34:00 【问题描述】:

当我从命令行运行它时,我有一个 jdbc-source-connector 工作,如下所示

bin/connect-standalone.sh \
    config/connect-standalone.properties \
    config/connect_mysql-jdbc-source.properties

但是当我将文件内容解析为 Java 应用程序中的映射并创建 io.confluent.connect.jdbc.JdbcSourceConnector 以地图为参数我得到

java.sql.SQLException: 用户 ''@'localhost' 的访问被拒绝(使用 密码:NO)

下面是我的连接器的内容,正如我所说,它在从命令行调用时工作并创建所有 3 个主题

   name=test-mysql-jdbc   
   connector.class=io.confluent.connect.jdbc.JdbcSourceConnector
   tasks.max=1
   connection.url=jdbc:mysql://127.0.0.1:3306/loaderDB 
   connection.user=root
   connection.password=MyPassword
   table.whitelist=loader_jobs, education_event, school_unit   
   tables="loader_jobs, education_event, school_unit"
   mode=bulk
   topic.prefix=test_mysql_jdbc_ 
   numeric.mapping=best_fit   
   poll.interval.ms=86400000 
   batch.max.rows=10000

在调试应用程序时,我可以清楚地看到所有属性都已读取,当它到达分配连接 url 以获取数据库连接的部分时,它会抛出上面的 SQL 异常。

该类中没有提及数据库用户和密码,所以我尝试将配置文件中的connection.url 更改为

connection.url=jdbc:mysql://127.0.0.1:3306/loaderDB?user=root&password=MyPassword

但我还是遇到了同样的异常

【问题讨论】:

看起来不像是连接问题。您必须允许数据库访问.... 用户名和密码无处可寻?我清楚地看到了两个使用它的连接属性 First OneCricketeer,我不确定你是否将整个帖子都变红了。正如我在帖子中提到的,我从命令行使用相同的连接器文件没有任何问题。那么我应该在哪里允许分贝访问?您看到的属性是连接器文件中的属性,我说的是当我调试应用程序并进入 confluents JdbcSourceConnector 类时,我没有看到 DB 用户和密码的任何属性,它只有一个 URL 属性。 文件中的每一行都被传递到代码中的Properties 对象中。所以我不明白你想在这里做什么。 Connect 旨在通过 CLI 运行,而不是嵌入到另一个进程中 【参考方案1】:

我通过升级我的 pom 依赖项解决了这个问题

    <groupId>io.confluent</groupId>
    <artifactId>kafka-connect-jdbc</artifactId>
    <version>5.0.0</version>

我之前使用的是 2.0.1 版本。

【讨论】:

以上是关于汇合的 jdbc-source-connector 不能在 Java 中工作的主要内容,如果未能解决你的问题,请参考以下文章

在汇合中更改内联等宽代码的格式以使其脱颖而出

异步汇合

java的基本汇合

汇合:Hdfs 沉入 avro 格式,但在 hive 中读取 avro 文件时,我的时间比“时区”提前 5:30 小时:“亚洲/加尔各答”

特林叫啥

用状态机表示SFC中的并行分支