camel-spring-jdbc
Since Camel 3.10
Only producer is supported
Spring JDBC 组件是 JDBC 组件的扩展,具有与 Spring 事务管理器集成的一项附加功能。
有关此组件的一般用途,请参阅
Maven 用户需要pom.xml
为此组件添加以下依赖项:
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-spring-jdbc</artifactId> <version>x.x.x</version> <!-- use the same version as your Camel core version --> </dependency>
配置选项
Camel 组件在两个单独的级别上配置:
-
component level
-
endpoint level
配置组件选项
组件级别是最高级别,包含端点继承的通用和通用配置。例如,组件可能具有安全设置、身份验证凭据、网络连接 url 等。
一些组件只有几个选项,而其他组件可能有很多。由于组件通常具有常用的预配置默认值,因此您可能通常只需要在组件上配置几个选项;或者根本没有。
可以使用
配置端点选项
您发现自己配置最多的地方是在端点上,因为端点通常有很多选项,这允许您配置需要端点执行的操作。这些选项还分为端点是用作消费者(from)还是用作生产者(to),或者两者都使用。
配置端点通常直接在端点 URI 中作为路径和查询参数完成。您还可以使用
配置选项时的一个好习惯是使用
以下两部分列出了所有选项,首先是组件,然后是端点。
组件选项
Spring JDBC 组件支持 4 个选项,如下所列。
名称 | 描述 | 默认 | 类型 |
---|---|---|---|
dataSource (producer) | 使用 DataSource 实例而不是从注册表中按名称查找数据源。 | DataSource | |
lazyStartProducer(生产者) | 生产者是否应该懒惰地启动(在第一条消息上)。通过延迟启动,您可以使用它来允许 CamelContext 和路由在生产者可能在启动过程中失败并导致路由启动失败的情况下启动。通过延迟启动延迟,启动失败可以在通过 Camel 的路由错误处理程序路由消息期间处理。请注意,当处理第一条消息时,创建和启动生产者可能需要一些时间并延长处理的总处理时间。 | boolean | |
autowiredEnabled(高级) | 是否启用自动装配。这用于自动自动装配选项(该选项必须标记为自动装配),通过在注册表中查找是否存在匹配类型的单个实例,然后在组件上进行配置。这可用于自动配置 JDBC 数据源、JMS 连接工厂、AWS 客户端等。 | true | boolean |
connectionStrategy (advanced) | 使用自定义策略处理连接。使用 spring-jdbc 组件时不要使用自定义策略,因为默认情况下使用特殊的 Spring ConnectionStrategy 来支持 Spring Transactions。 | ConnectionStrategy |
端点选项
Spring JDBC 端点是使用 URI 语法配置的:
spring-jdbc:dataSourceName
具有以下路径和查询参数:
路径参数(1个参数)
name | 描述 | 默认 | 类型 |
---|---|---|---|
dataSourceName (producer) | 要在注册表中查找的数据源的必需名称。如果名称是 dataSource 或 default,则 Camel 将尝试从注册表中查找默认 DataSource,这意味着如果只找到一个 DataSource 实例,则将使用此 DataSource。 | string |
查询参数(14个参数)
姓名 | 描述 | 默认 | 类型 |
---|---|---|---|
allowNamedParameters(生产者) | 是否允许在查询中使用命名参数。 | true | 布尔值 |
lazyStartProducer(生产者) | 生产者是否应该懒惰地启动(在第一条消息上)。通过延迟启动,您可以使用它来允许 CamelContext 和路由在生产者可能在启动过程中失败并导致路由启动失败的情况下启动。通过延迟启动延迟,启动失败可以在通过 Camel 的路由错误处理程序路由消息期间处理。请注意,当处理第一条消息时,创建和启动生产者可能需要一些时间并延长处理的总处理时间。 | 布尔值 | |
outputClass (producer) | 指定在 outputType=SelectOne 或 SelectList 时用作转换的完整包和类名。 | 细绳 | |
outputType (producer) | 确定生产者应该使用的输出。枚举值:选择一个选择列表流列表 | 选择列表 | JDBC输出类型 |
parameters (producer) | java.sql.Statement 的可选参数。例如设置 maxRows、fetchSize 等。 | 地图 | |
readSize (producer) | 轮询查询可以读取的默认最大行数。默认值为 0。 | 整数 | |
resetAutoCommit(生产者) | Camel 会将 JDBC 连接上的 autoCommit 设置为 false,如果 resetAutoCommit 为 true,则在执行该语句后提交更改并在最后重置连接的 autoCommit 标志。如果 JDBC 连接不支持重置 autoCommit 标志,您可以将 resetAutoCommit 标志设置为 false,Camel 不会尝试重置 autoCommit 标志。当与 XA 事务一起使用时,您很可能需要将其设置为 false,以便事务管理器负责提交此 tx。 | true | 布尔值 |
transacted (producer) | 是否正在使用事务。 | 布尔值 | |
useGetBytesForBlob(生产者) | 将 BLOB 列作为字节而不是字符串数据读取。对于某些数据库(例如 Oracle),您必须将 BLOB 列作为字节读取,这可能是必需的。 | 布尔值 | |
useHeadersAsParameters(生产者) | 将此选项设置为 true 以使用带有命名参数的 prepareStatementStrategy。这允许使用命名占位符定义查询,并使用带有查询占位符动态值的标题。 | 布尔值 | |
useJDBC4ColumnNameAndLabelSemantics(生产者) | 设置检索列名时是使用 JDBC 4 还是 JDBC 3.0 或更旧的语义。JDBC 4.0 使用 columnLabel 来获取列名,而 JDBC 3.0 使用 columnName 或 columnLabel。不幸的是,JDBC 驱动程序的行为有所不同,因此如果您在使用此组件时遇到问题,您可以使用此选项来解决有关 JDBC 驱动程序的问题。此选项默认为 true。 | true | 布尔值 |
beanRowMapper(高级) | 在使用 outputClass 时使用自定义 org.apache.camel.component.jdbc.BeanRowMapper。默认实现将小写行名称并跳过下划线和破折号。例如,CUST_ID 被映射为 custId。 | BeanRowMapper | |
connectionStrategy (advanced) | 使用自定义策略处理连接。使用 spring-jdbc 组件时不要使用自定义策略,因为默认情况下使用特殊的 Spring ConnectionStrategy 来支持 Spring Transactions。 | 连接策略 | |
prepareStatementStrategy(高级) | 允许插件使用自定义 org.apache.camel.component.jdbc.JdbcPrepareStatementStrategy 来控制查询和准备语句的准备。 | JdbcPrepareStatement策略 |
SPRING BOOT 自动配置
在 Spring Boot 中使用 spring-jdbc 时,请确保使用以下 Maven 依赖项来支持自动配置:
<dependency> <groupId>org.apache.camel.springboot</groupId> <artifactId>camel-spring-jdbc-starter</artifactId> <version>x.x.x</version> <!-- use the same version as your Camel core version --> </dependency>
姓名 | 描述 | 默认 | 类型 |
---|---|---|---|
camel.component.spring-jdbc.autowired-enabled | 是否启用自动装配。这用于自动自动装配选项(该选项必须标记为自动装配),通过在注册表中查找是否存在匹配类型的单个实例,然后在组件上进行配置。这可用于自动配置 JDBC 数据源、JMS 连接工厂、AWS 客户端等。 | true | boolean |
camel.component.spring-jdbc.connection-strategy | 使用自定义策略处理连接。使用 spring-jdbc 组件时不要使用自定义策略,因为默认情况下使用特殊的 Spring ConnectionStrategy 来支持 Spring Transactions。该选项是 org.apache.camel.component.jdbc.ConnectionStrategy 类型。 | ConnectionStrategy | |
camel.component.spring-jdbc.enabled | 是否开启spring-jdbc组件的自动配置。这是默认启用的。 | boolean | |
camel.component.spring-jdbc.lazy-start-producer | 生产者是否应该懒惰地启动(在第一条消息上)。通过延迟启动,您可以使用它来允许 CamelContext 和路由在生产者可能在启动过程中失败并导致路由启动失败的情况下启动。通过延迟启动延迟,启动失败可以在通过 Camel 的路由错误处理程序路由消息期间处理。请注意,当处理第一条消息时,创建和启动生产者可能需要一些时间并延长处理的总处理时间。 | false | boolean |