我正在努力让Confluent的kafka连接器连接到DB2。
我正在docker内部运行ubuntu实例,以测试目的。该解决方案需要部署到kubernetes,因此也要部署到docker。
我已经使用apt-get安装了Confluent平台并添加了其存储库。所有服务都在运行,kafka,zookeeper,schema和kafka rest。
我已按照本文中的描述创建了我的kafka connect属性文件: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
我收到此错误:
no main manifest attribute, in /usr/share/java/kafka-connect-jdbc/db2jcc.jar
无论如何,我还是继续,但是我当然得到了一个错误:
No suitable driver found for jdbc:datadirect:db2://db2-server:50000;User=db2admin;Password=pwd;Database=test_db
这是我启动连接器的命令:
/usr/bin/connect-standalone /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.ExecutionException: org.apache.kafka.connect.errors.ConnectException: Class com.ibm.db2.jcc.DB2Jcc does not implement Connector
任何帮助或建议将不胜感激。
答案 0 :(得分:0)
我是您提到的教程的作者,我刚刚注意到此线程,并且看到您正在将IBM提供的DB2驱动程序(db2cc.jar
)与DataDirect IBM DB2连接字符串(jdbc:datadirect:db2://db2-server:50000;User=db2admin;Password=pwd;Database=test_db
)一起使用,这就是为什么只要将连接字符串更改为IBM提供的驱动程序,便能够正确连接。