我正在努力让Confluent的kafka连接器连接到DB2。
我正在 docker 中运行一个 ubuntu 实例来测试普鲁波斯。该解决方案需要部署到 kubernetes,所以 docker 就是这样。
我已经使用apt-get安装了ConFluent平台并添加了他们的repos。所有服务都在运行,kafka,zoo的,模式和kafkaRest。
我已经创建了我的kafka连接属性文件,如本文所述:https://www.progress.com/blogs/build-an-etl-pipeline-with-kafka-connect-via-jdbc-connectors
我假设这对 DB2 的工作方式相同。我在上面的教程中缺少的步骤是这个:java -jar PROGRESS_DATADIRECT_JDBC_POSTGRESQL_ALL.jar
我试着这样运行:java-jar /usr/share/java/kafka-connect-jdbc/db2jcc.jar
我得到这个错误:没有主清单属性,在 /usr/share/java/kafka-connect-jdbc/db2jcc.jar
我还是继续,但当然我得到一个错误:找不到适合 jdbc:datadirect:db2://db2-server:50000 的驱动程序;用户=db2admin;密码=pwd;数据库=test_db
这是我启动连接器的命令:/usr/bin/连接-独立 /etc/kafka/connect-standalone.properties /etc/kafka-connect-jdbc/db2.properties
这是我的属性文件:
name=test-db2-jdbc
connector.class=io.confluent.connect.jdbc.JdbcSourceConnector
tasks.max=1
connection.url=jdbc:datadirect:db2://db2-server:50000;User=db2admin;Password=pwd;Database=test_db
mode=timestamp+incrementing
incrementing.column.name=id
timestamp.column.name=modified_time
topic.prefix=test_jdbc_
table.whitelist=data_log
我确信我很接近了。我只需要让DB2驱动程序在java中注册,或者让kafka connect获取并使用它。
我已经尝试了connector.class
的其他值,但是如果我像在其他Java应用程序中一样将其更改为类的名称,我会得到这个错误:java.util.concurrent.Ex的异常:org.apache.kafka.connect.errors.连接异常:类com.ibm.db2.jcc.DB2Jcc没有实现连接器
任何帮助或建议将不胜感激。
我是你提到的教程的作者,我刚刚注意到这个线程,我看到你正在使用IBM提供的DB2驱动程序(db2cc.jar
)和DataDirect IBM DB2连接字符串(jdbc:datadirect:db2://db2-server:50000;用户=db2admin;Password=pwd;Database=test_db
),这就是为什么只要将连接字符串更改为 IBM 提供的驱动程序,您就可以正确连接的原因。