JDBC 支持
Spring Integration 提供了通道适配器,用于通过数据库查询接收和发送消息。通过这些适配器,Spring Integration 不仅支持普通的 JDBC SQL 查询,还支持存储过程和存储函数调用。
你需要将这个依赖项添加到你的项目中:
- Maven
- Gradle
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-jdbc</artifactId>
<version>6.4.2</version>
</dependency>
compile "org.springframework.integration:spring-integration-jdbc:6.4.2"
默认情况下,以下 JDBC 组件可用:
Spring Integration JDBC 模块还提供了一个 JDBC 消息存储。
部分总结
📄️ 入站通道适配器
入站通道适配器的主要功能是执行 SQL SELECT 查询,并将结果集转换为消息。消息的有效负载是整个结果集(表示为一个 List),列表中的项目类型取决于行映射策略。默认策略是通用映射器,它为查询结果中的每一行返回一个 Map。可选地,你可以通过添加对 RowMapper 实例的引用来更改此设置(有关行映射的更多详细信息,请参阅 Spring JDBC 文档)。
📄️ 出站通道适配器
outbound 通道适配器与 inbound 是相反的:它的作用是处理一条消息并使用它来执行 SQL 查询。默认情况下,消息的有效负载和标题可作为查询的输入参数,如下例所示:
📄️ 出站网关
outbound 网关就像 outbound 和 inbound 适配器的组合:它的作用是处理消息并使用它来执行 SQL 查询,然后通过将其发送到回复通道来响应查询结果。默认情况下,消息的有效负载和标题可作为查询的输入参数,如下例所示:
📄️ JDBC 消息存储
Spring Integration 提供了两个 JDBC 特定的消息存储实现。JdbcMessageStore 适用于与聚合器和声明检查模式一起使用。JdbcChannelMessageStore 实现则专门为消息通道提供了一个更具针对性和可扩展性的实现。
📄️ 存储过程
在某些情况下,纯 JDBC 支持是不够的。也许你处理的是遗留的关系数据库模式,或者你有复杂的数据处理需求,但最终,你必须使用存储过程或存储函数。自 Spring Integration 2.1 起,我们提供了三个组件来执行存储过程或存储函数:
📄️ JDBC 锁注册表
版本 4.3 引入了 JdbcLockRegistry。某些组件(例如,聚合器和重排序器)使用从 LockRegistry 实例获得的锁来确保一次只有一个线程操作一个组。DefaultLockRegistry 在单个组件内执行此功能。您现在可以配置这些组件上的外部锁注册表。当与共享的 MessageGroupStore 一起使用时,您可以使用 JdbcLockRegistry 在多个应用程序实例之间提供此功能,从而确保一次只有一个实例可以操作该组。
📄️ JDBC 元数据存储库
版本 5.0 引入了 JDBC MetadataStore(请参阅元数据存储)实现。您可以使用 JdbcMetadataStore 在应用程序重启时保持元数据状态。此 MetadataStore 实现可以与以下适配器一起使用: