在 Camel Route 中维护数据库连接

Maintain db connection inside Camel Route

要求:我们在java 应用程序中创建一个数据库连接。我们需要 运行 通过整个 Java 应用程序上的相同连接的所有语句。 问题:一旦在 Camel 路由中传递创建的数据源,它显然会创建一个新连接。

我正在使用创建到 Oracle 数据库的连接的数据源对象。关于这一点,我 运行 发表了几个声明。

Connection myConn = myDBDatasource.getConnection()

作为第二部分,我将创建的数据源用于我的 Camel 路线

SimpleRegistry reg = new SimpleRegistry();
reg.put("myDBDatasource", myDBDatasource);

在我的路线中,我使用一个 bean 创建一个最终结束到我的数据库的查询。

from("direct:start").bean(MyClass.class,
"processData").to("jdbc:oracleDataSource?resetAutoCommit=false");

所以在这种情况下的问题是我在开始时创建了一个我想在整个应用程序中使用的新连接。一旦 Camel 执行到数据库的路由,它就会创建一个新的。

问题 1:有没有办法在 Camel RouteBuilder 中以某种方式保持相同的连接(myConn)? 问题 2:我的数据源已设置为 DefaultAutoCommit(false) 。难道是在 RouteBuilder Camel 内部忽略了这一点并仍然提交查询?

您可以使用 Spring 的 SingleConnectionDataSource 或制作自定义的。如果您想阻止 Camel 提交,请使用连接代理并禁用 commit()。

我终于创建了自己的自定义数据源 class 并实现了一些也在 Spring 的 SingleConnectionDataSource 中找到的部分。